Shawn wrote:
> > > > 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;
> > > > }
> > > >
> > > >
Someone asked: (Sorry, I've lost the attribution)
> > >
> > > If you set a new value, why would you want your client to still be
> > > using the old value?
> >
I (Lawrence) responded:
> > 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.
>
Jenda wrote:
> You know the value you assigned to a variable as well so why does
> $x = 5
> evaluate to 5 and not the old value of $x? Maybe because you may want
> to write
>
> $x = $y = $z = 0;
You may be amazed the number of beginning programmers who are baffled
by that construct.
>
> I bet most people would be very surprised if they ended up with $x
> containing the old value of $y, $y with the old value of $z and $z
> equal to 0. So IMHO just like
> $x = 5
> evaluates to 5 and
> $h{key} = 5
> $h[$i] = 5
> $hr->{key} = 5
> all evalate to 5 so should
> $obj->size(5)
> evaluate to 5.
A very good argument.
>
> I'm not sure it's such a bad habit. Though probably it's better to
> use something like this:
>
> for ($fruit) {
> $_->name('apple');
> $_->color('red');
> $_->texture('crunchy')
> }
>
Hrm ... a Clever Construction, indeed. Our local style guide bans the
use of for without an explicit index variable , so that bit of
cleverness would lead to the following silly code:
for my $localfruit ($fruit) {
$localfruit->name('apple');
$localfruit->color('red');
$localfruit->texture('crunchy');
}
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
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>