Carl Franks skribis 2005-04-21 11:29 (+0100):
> I wish to convert these 2 subroutines to perl6:
> sub foo {
> my $self = shift;
> $self->{foo} = defined $_[0] ? shift : undef;
> }
> sub bar {
> my $self = shift;
> $self->{bar} = defined $_[0] ? shift : $DEFAULT;
> }
> Is this correct?
Those are weird methods. They're essentially write-only accessor methods
for their respective internal attributes (in perl 5 called properties).
> method foo (?$.foo = undef) {};
> method bar (?$.bar = $DEFAULT) {};
The fun thing is that
has $.foo;
has $.bar;
already gives you, for free and imlicitly, two lvalue accessor methods
that can be used for both reading and writing the value. You appear to
want a default that is used at set-time, which I find weird. More common
I think would be to provide a default that is used at the time of object
construction.
has $.foo;
has $.bar = $DEFAULT;
Juerd
--
http://convolution.nl/maak_juerd_blij.html
http://convolution.nl/make_juerd_happy.html
http://convolution.nl/gajigu_juerd_n.html