ich möchte eine Klasse programmieren, die pro Instanz ein "Child"-Array enthält. Dieses Array möchte ich möglichst geschickt füllen($action="add") und auslesen($action="get"). Leider sind meine Kenntnisse, der OOP unter Perl momentan nicht so besonders. Den folgenden Code habe ich aktuell geschrieben, aber irgendwie kann ich nicht auf das Array in der Instanz $pp1 zugreifen. Was mache ich falsch?
Dein @child ist nur innerhalb der Sub child gültig, damit bekommst Du bei jedem Aufruf ein "frisches" Array.
Entweder Du machst die Variable zur Objekteigenschaft:
package Parkplatz;
sub new {
my $class = shift;
my $self = { child => [] };
bless $self, $class;
}
sub AddChild {
my $self = shift;
my $par = shift;
push @{$self->{child}}, $child;
}
sub GetChild {
my $self = shift;
return $self->{child};
}
Oder Du machst eine private Variable draus:
package Parkplatz;
my @child = ();
sub new {
my $class = shift;
bless {}, $class;
}
sub AddChild {
my $self = shift;
my $par = shift;
push @child, $par;
}
sub GetChild {
return @child;
}
Der Aufruf sähe dann so aus:
Variante 1:
my $pp1 = Parkplatz->new();
$pp1->AddChild('test1');
print $pp1->{child}->[0];
Variante 2:
my $pp1 = Parkplatz->new();
$pp1->AddChild('test1');
my @test = $pp1->GetChildren();
print $test->[0];
Was Du einsetzt, hängt von dem ab, was Du da eigentlich genau vorhast.
Siechfred
--
Chancengleichheit bedeutet nicht, dass jeder einen Apfel pflücken kann, sondern dass der Zwerg eine Leiter bekommt.
Chancengleichheit bedeutet nicht, dass jeder einen Apfel pflücken kann, sondern dass der Zwerg eine Leiter bekommt.