On Sunday, October 6, 2002, at 12:57 AM, Noah White wrote: >> >>> Note that an alternate definition of "private" is often used, as >>> follows: >>> >>> A "private" attribute is an attribute whose scope is restricted >>> such that >>> it may be accessed only within the class in which it has been >>> declared, >>> OR WITHIN ANY CLASS THAT INHERITS FROM THAT CLASS. >> >> I'll agree with that. >> > > ACK! After re-reading this I about puked. No, that notion of private > would not be something I'd agree with :-) That's more like protected.
As I think I've mentioned once before, and will again as Eiffel's been mentioned recently... Is there any chance Perl6 could simply avoid the can of worms that is public/private/protected and have a single accessibility property? It would seem to clean the debate up handily, and provides even greater flexibility for programmers. Along the lines of: class Foo { attr $.bar is accessible(Bar, Baz); # Makes $.bar attribute accessible only to the Bar and Baz classes. attr $.baz is accessible(Foo); # Protected attr $.hello is accessible(None); # explicitly Private attr $.world is accessible(Any); # Public } Of course, if Perl6 went down this road, Ruby-ish read, write, or read/write attributes would also be nice. I might want to let another class read an attribute, but not write to it, while I might for some reason want another class to be able to write to an attribute, but not read it. But maybe I'm just weird that way. :-)