On Fri, Oct 28, 2005 at 06:23:28PM +0200, Yuval Kogman wrote: > On Fri, Oct 28, 2005 at 10:38:31 -0500, Jonathan Scott Duff wrote: > > Er, there is only one $:foo. X doesn't have any private members, nor > > does Y (because they're roles). Only C has private members. So, > > modulo the multiple composition of Foo, I don't think there's a > > conflict. > > Really? I didn't know that... In that case roles are broken... They > will need instance data (that doesn't conflict when it's private) to > support the methods they give their consumers. > > Is there any good reason to not allow roles to introduce member data > into a class?
Roles can hold instance data that will be composed into a class. What I'm saying is that if you have two roles: role X { has $:foo; } role Y { has $:foo; } And a class that's composed of them: class Xy does X does Y { ... } That there will not be two slots for $:foo in Xy, but only one. But, I'm probably wrong about this as the X role may have methods that use $:foo in one way and the Y role may have methods that use $:foo in some other, incompatible way, so perhaps there will be a conflict just as when there are 2 methods of the same name. -Scott -- Jonathan Scott Duff [EMAIL PROTECTED]