Siechfred: Perl Array in Instanz füllen und auslesen

Beitrag lesen

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.