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 [email protected] On Mon, Feb 29, 2016 at 4:30 AM, Dinko Srkoč <[email protected]> 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 <[email protected]> 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 > > [email protected] > > >
