On Wed, Aug 17, 2005 at 02:42:57PM -0400, Stevan Little wrote: : I think in a Role, $?SELF would still be the invocant in a method, and : $?CLASS would (eventually) bind to the class the role was composed : into.
Yes, such things stay generic as long as they need to, and no longer. : As for submethods, I see them like this: : : submethod foo () { ... } : : is really .. : : submethod foo () { : next METHOD unless $?SELF ~~ $?CLASS; : } : : At least that is how larry explained to me about a month ago. Can't use ~~ for that, since ~~ implies "does", which is not an exact class match. Probably need next METHOD unless $?SELF.class =:= $?CLASS; or some such. Except that BUILDALL/DESTROYALL have to be able to invoke submethods on partial objects whose actual class is not the same as the submethod, so there needs to be some way of forcing $?SELF to consider itself in $?CLASS temporarily for infrastructural purposes. Maybe it's as easy as "temp $obj.class := $tmpclass" in the BUILDALL/DESTROYALL dispatcher. I dunno. Larry