Larry said: > The interesting question to me is what > > $ref = \$foo.as(Color); > > returns. It looks like a typed reference to me, but it's still > a reference to the object in $foo, or can behave as one somehow. > I don't think it should generate a reference to the bare role, > because roles aren't intended to be first class objects (though > you can force them to be, I think). Roles are supposed to > encapsulate abstractions without implying objecthood. I think > roles are a little bit like quarks--they're fine in theory, but > it's scary to have loose ones floating around.
Ok, wait a sec. Does that mean different references to the same critter can have differing sets of aspects? my Dog $Spot; my $doggie = Dog.new(); my $meandog = \$doggie.as(AttackDog); my $nicedog = \$doggie.as(LapDog); if $me.away { if $visitor.nephew { $Spot = $nicedog; } else { $Spot = $meandog; } } Now, if I'm away and someone show up, I presume that if it's my nephew then $Spot.seeVisitor() will invoke the LapDog role's .wag() method, but otherwise I expect it to invoke the AttackDog role's .Bark() method. I realize there are other ways to get here.... but would this *work*??? And btw, just a refresher on this "assigning a ref" thing -- would the syntax have to change at *all*? __________________________________ Do you Yahoo!? New Yahoo! Photos - easier uploading and sharing. http://photos.yahoo.com/