* Graeme McLaren <[EMAIL PROTECTED]> [2006-06-08T05:44:05]
> Hi all, I've just been reading a bit about accessor get/set methods. I
> have a method:
>
> sub even{
> my $self = shift;
> my $even = shift;
>
> $self->{_even} = $even if defined($even);
> return $self->{_even};
> }
>
>
> This basically does what a get and set method would do. So why would I
> need a set/get methods? This value is passed to the object like so:
It's a question of style, largely. Some people prefer their code to be
very clear about whether your getting or setting. Using explicit set and get
methods can also help prevent bugs; you won't accidentally make a read-only
value writeable, because you will avoid writing a set_ro_value method -- if you
only have a get-and-set ro_value method, you might forget to special-case it to
be get-only.
Also, you'd probably avoid bugs like the one you introduced above. What
happens if I want to clear the even value?
$obj->even(undef);
This does not affect the value; I can't undef even.
You probably wanted:
sub even {
my $self = shift;
return $self->{even} unless @_;
return $self->{even} = shift @_;
}
--
rjbs
signature.asc
Description: Digital signature
