Thread Stilfragen (Anfaengerperl) (12 answers)
Opened by shi8dao at 2011-05-13 08:33

topeg
 2011-05-13 11:25
#148561 #148561
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Ich schreibe gerne kombinierte getter/setter. Das macht große Module übersichtlicher, da die selbe Methode einen Wert ausgibt und ließt.

Außerdem sollte man bei generischen settern/gettern testen, ob der Schlüssel schon existiert. Es ist unpraktisch wenn ein Tippfehler als Schlüssel im Objekt landet und nichts macht. Der Programmierende sucht sonst ewig warum etwas nicht funktioniert.

Etwa so könnte man es machen:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use Carp;

#...

sub attribute
{
  my $self=shift;
  my $attr=shift;
  # teste ob die variable im Objekt existiert
  if(exists($self->{$attr}))
  {
    my $val=$self->{$attr};
    # setze neuen Wert wenn angeben
    $self->{$attr}=shift() if(@_);
    return $val;
  }

  carp(qq(Attribute "$attr" not part of ).__PACKAGE__."!\n");
  return undef;
}

# get-setter:
sub id    { shift->attribute('id',@_); }
sub value { shift->attribute('value',@_); }

Last edited: 2011-05-13 11:26:41 +0200 (CEST)

View full thread Stilfragen (Anfaengerperl)