On Tue, 2004-04-20 at 10:13, John Siracusa wrote:
> On 4/19/04 7:20 PM, Larry Wall wrote:
> > On Mon, Apr 19, 2004 at 06:53:29PM -0400, John Siracusa wrote:
> > : Yeah, that's exactly what I don't want to type over and over :)
> > 
> > I really don't understand what you're getting at here.  First you
> > complain that you'd rather write an ordinary method, and then you
> > complain that you have to.  Have I met someone lazier than me?  :-)
> 
> Possibly :)  Here's what I'm saying.  In the first version of a class, there
> will probably be a lot of simple get/set attributes.  It's convenient not to
> have to write any explicit methods for those.
> 
> If I accept the default accessors that you get "for free" when a class  "has
> $.foo is rw", then that means the users of my class can do $obj.foo =
> whatever in order to set the foo attribute.

And if you override the accessor, you can:

        multi method foo(Str $blah = undef) is rw($new) {
                (my($old),$.foo)=($.foo,$blah//$new);
                .update_the_world_in_some_cool_way();
                return $old
        }

and while that's verbose, it's only a bit more verbose than:

        multi method foo(Str $blah) {
                (my($old),$.foo)=($.foo,$blah);
                return $old;
        }

which is what you would have write ANYWAY to add your new functionality.

-- 
Aaron Sherman <[EMAIL PROTECTED]>
Senior Systems Engineer and Toolsmith
"It's the sound of a satellite saying, 'get me down!'" -Shriekback


Reply via email to