This looks like an elegant solution. Are you confirming that there's no way
for a method inside "class Chameleon" to achieve the goal? Just by moving
method out to a trait, it becomes aware of all the inherited and
implemented props? Not bad...
THANKS! this list has been really awesome for learning.
Gerald R. Wiltse
jerrywiltse@gmail.com
On Mon, Feb 29, 2016 at 4:30 AM, Dinko Srkoč <dinko.srkoc@gmail.com> wrote:
> I know this is not exactly what you asked, but would something like
> this work for you?
>
> class Chameleon{ String color = "green" }
>
> trait ColorChanging {
> String lastColor
> def changeColor = {newcolor ->
> lastColor = this.color
> this.color = newcolor
> }
> }
>
> trait MyProps {
> void printAllMyProperties(){
> this.properties.each{println it}
> }
> }
>
> def mylizard = new Chameleon().withTraits(ColorChanging, MyProps)
>
> mylizard.changeColor('blue')
>
> mylizard.printAllMyProperties()
> mylizard.properties.each{println it}
>
> Cheers,
> Dinko
>
> On 29 February 2016 at 03:23, Gerald Wiltse <jerrywiltse@gmail.com> wrote:
> > Is there a way for the Chameleon class to ever see that it has a
> "lastColor"
> > property?
> >
> > class Chameleon{
> > String color = "green"
> >
> > void printAllMyProperties(){
> > this.properties.each{println it}
> > }
> >
> > }
> >
> > trait ColorChanging {
> > String lastColor
> > def changeColor = {newcolor ->
> > lastColor = this.color
> > this.color = newcolor
> > }
> > }
> >
> > def mylizard = new Chameleon().withTraits(ColorChanging)
> >
> > mylizard.changeColor(blue)
> >
> > mylizard.printAllMyProperties()
> > mylizard.properties.each{println it}
> >
> > The outputs of the two above lines don't match. lastColor isn't available
> > from inside the class.
> >
> > This seems like it should be possible, but I tried several things
> including
> > the declaredFields property and could not get the desired effect.
> >
> > In this script, I'm looking for a way for my instance to reference all
> the
> > properties it's received from the trait. I guess it's same situation with
> > inheritance, and properties added by propertymissing.
> >
> >
> >
> >
> > Gerald R. Wiltse
> > jerrywiltse@gmail.com
> >
>
|