Just to bring some of the IRC discussion to the list... Carl Mäsak wrote: > Rakudo and I have a disagreement over this: I expect to be able to > assign to a $.foo attribute in methods within the class, whereas > Rakudo demands the "is rw" attribute in order to do that. > > We discussed it a bit on #perl6 today. > > <http://irclog.perlgeek.de/perl6/2008-09-17#i_572836> > > I only have pragmatic arguments to offer for my point of view: > somehow, it feels like each and every attribute gets an "is rw" as > things stand now. The modifier somewhat loses its meaning... if it > meant "_publicly_ readable/writable", it would only be used for some > variables.
There's also the point that you can initialize attributes with the . twigil: class Stuff { has $.more_stuff = 3 } So at least visually it appears as though you *can* assign to it. Not allowing that in other places feels weird. Yes, I know that $.stuff actually translates to $( self.stuff ), so without 'is rw' there is no rw accessor generated - but couldn't we just fake assignment to '$.foo' to actually affect '$!foo'? > Finally, some useless statistics: I count 12 attributes in different > classes in November right now. Out of those, 12 (100%) have the "is > rw" attribute. This is mostly probably due to non-working constructors. Simple cases seem to work, though: 12:29 < moritz_> rakudo: class A { has $.b }; my A $x .= new(b => 3); say $x.b 12:29 < p6eval> rakudo 31204: OUTPUT[3] Moritz -- Moritz Lenz http://moritz.faui2k3.org/ | http://perl-6.de/