2010-10-01 4 views
0

Je dois créer un tableau multidimensionnel qui sera transmis à une classe.Utilisation d'un tableau multidimensionnel dans la classe Perl

Voici un exemple de code où je peux référencer les éléments du tableau en dehors de la classe, mais une fois que je crée une classe et que je passe le tableau multidimensionnel, je ne peux pas le référencer à l'intérieur de la classe.

Sortie:

Mon tableau Valeur = 3

Impossible d'utiliser la chaîne ("1") en tant que ref MATRICE tout "strict refs" en cours d'utilisation à la ligne de 18 test.pl.

package TestClass; 
use strict; 

sub new 
{ 
    my $class = shift; 
    my $self = 
    { 
     _array => shift 
    }; 
    bless $self, $class; 
    return $self; 
} 

sub print 
{ 
    my ($self) = @_; 
    print "TestClass variable = " . @{$self->{_array}->[0]}[1] . "\n"; 
} 

my @my_array =(); 
push(@my_array, [1,2]); 
push(@my_array, [3,4]); 

print "My Array Value = " . @{@my_array->[1]}[0] . "\n"; 

my $class = new TestClass(@my_array); 

$class->print; 

1; 

Répondre

4

vous passez une liste avec deux éléments à votre constructeur, chaque élément étant l'un des refs du tableau que vous avez construits.

Je crois que vous vouliez passer une référence de tableau contenant les deux autres références de tableau anonyme à la place:

TestClass->new(\@my_array); 

Votre tableau de-référencement dans @{@my_array->[1]}[0] est aussi un peu bizarre. C'est quelque chose que use warnings; aurait attrapé.

+1

D'accord. $ my_array [1] [0] '(ou' $ self -> {_ array} [0] [1] ') semble plus facile à lire. –

+0

A travaillé super, merci! – Trevor