2010-10-01 68 views
0

我需要创建一个多维数组,它将被传递给一个类。在Perl类中使用多维数组

这里是示例代码,我可以引用类外的数组元素,但是一旦我创建了一个类并传递了多维数组,我就无法在类中引用它。

输出:

我的数组值= 3

无法使用字符串( “1”)作为数组引用而 “严格参” 在使用中test.pl线18。

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; 

回答

4

你传递一个列表有两个元素到你的构造函数,每一个元素是您构建的阵列裁判之一。

我相信你想传递一个包含其它两个匿名数组引用而不是数组引用:

TestClass->new(\@my_array); 

你的阵列取消引用在@{@my_array->[1]}[0]也有点奇怪。这是use warnings;将会发生的事情。

+1

同意。 '$ my_array [1] [0]'(或'$ self - > {_ array} [0] [1]')似乎更易于阅读。 – 2010-10-01 15:46:01

+0

工作很好,谢谢! – Trevor 2010-10-01 15:57:18