【问题标题】:Using multi-dimensional array in Perl class在 Perl 类中使用多维数组
【发布时间】:2010-10-01 15:36:43
【问题描述】:

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

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

输出:

我的数组值 = 3

在 test.pl 第 18 行使用“严格引用”时,不能使用字符串 ("1") 作为 ARRAY 引用。

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;

【问题讨论】:

    标签: perl multidimensional-array


    【解决方案1】:

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

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

    TestClass->new(\@my_array);
    

    @{@my_array->[1]}[0] 中的数组取消引用也有点奇怪。这是use warnings; 会发现的。

    【讨论】:

    • 同意。 $my_array[1][0](或$self->{_array}[0][1])似乎更容易阅读。
    猜你喜欢
    • 2016-07-11
    • 1970-01-01
    • 2014-08-21
    • 2019-06-12
    • 2014-03-16
    • 2014-11-09
    • 2011-06-26
    • 2010-09-23
    • 2015-09-28
    相关资源
    最近更新 更多