> > I would prefer it to return the old value:
> >
> > sub foo {
> > my $self = shift;
> > my $old_foo = $self->{'foo'};
> > $self->{'foo'} = shift if @_ > 0;
> > return $old_foo;
> > }
> >
> >
>
> If you set a new value, why would you want your client to still be
> using the old value?
Because you may need to put the old value back. It's more of a
philosophical question. "What should the mutator return?"
The Object Purist says, "Nothing -- it should be declared void."
Another school says, "It should return the value you just set it to".
I think is useless -- it's a tautology. You KNOW what value you just
set it to.
Yet another thought is "The previous value" -- that is at least
something you didn't know going INTO the call - so it does increase
the total knowledge of your program.
My hitherto prefered answer is "It should return the object." Only
because I (used to) like to chain method calls. I've since lost this
bad habit.
$fruit->name('apple')->color('red')->texture('crunchy');
So, I am now wavering between the 'previous value' and 'nothing'
options.
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Lawrence Statton - [EMAIL PROTECTED] s/aba/c/g
Computer software consists of only two components: ones and
zeros, in roughly equal proportions. All that is required is to
sort them into the correct order.
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>