代码之家  ›  专栏  ›  技术社区  ›  Trevor

在Perl类中使用多维数组

  •  0
  • Trevor  · 技术社区  · 14 年前

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

    下面是示例代码,我可以引用类外部的数组元素,但是一旦我创建了一个类并传递多维数组,我就不能在类内部引用它。

    输出:

    在使用“strict refs”时,不能将字符串(“1”)用作数组引用测试.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;
    
    1 回复  |  直到 14 年前
        1
  •  4
  •   rafl    14 年前

    您正在将一个包含两个元素的列表传递给构造函数,每个元素都是您构建的数组引用之一。

    我相信您希望传递一个包含其他两个匿名数组引用的数组引用:

    TestClass->new(\@my_array);
    

    您的数组在中取消引用 @{@my_array->[1]}[0] use warnings; 会抓到的。