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.

Jonathan Scott Duff

Reply via email to