Moin Moin!
Hi
Ich sitze gerade for einem Designproblem.Ein Object Getter/Setter der einfachsten Art ist
sub midi {
my $score = shift;
if( $[0] ){ $score->{midi} = $[0] }
return $score->{midi};
}
>
> nun sollte mein Getter/Setter aber folgendes erfüllen:
> ~~~perl
> $ob->midi
> $ob->midi()
> # gibt den Inhalt aus $score->{midi} zurück
>
> $ob->midi("val")
> # setzt den Inhalt von $score->{midi}
> # und gibt den neuen Inhalt zurück
>
> $ob->midi(undef)
> # entfernt die Eigenschaft $score->{midi}
>
obiges ist aber identisch mit
$ob->midi()
und ist deshalb ein einfacher Getter.
Falsch. $_[1] ist zwar bei $ob->midi() und $ob->midi(undef) undefiniert, aber @_ enthält im ersten Fall nur ein Element, im zweiten Fall zwei.
sub midi
{
my $self=shift;
if (@_) {
my $value=shift;
if (defined $value) {
$self->{'midi'}=$value;
return $value; # oder $self, oder den alten Wert, oder gar nichts
} else {
delete $self->{'midi'};
return; # oder $self, oder den alten Wert (return value von delete)
}
} else {
return $self->{'midi'};
}
}
Alexander
--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".