2012-02-19 68 views
3

我想在Perl对象中使用数组的数组,并且仍然没有得到它的工作方式。Perl对象中数组的数组

这里的构造函数:

sub new { 
    my $class = shift; 
    my $self = {}; 
    $self->{AoA} = []; 
    bless($self, $class); 
    return $self; 
} 

在此可以插入塞给她的AoA的代码部分:

push (@{$self->{AoA}}[$row], $stuff); 

我仍然无法找到定义数组的方式什么在构造函数中的数组。

回答

4

您不需要在构造函数中定义AoA - 仅仅是最顶层的arrayref。就有福的散列而言,AoA仅仅是一个arrayref。

你的构造函数是完美的。

要插入,你做两两件事:

# Make sure the row exists as an arrayref: 
$self->{AoA}->[$row] ||= []; # initialize to empty array reference if not there. 
# Add to existing row: 
push @{ $self->{AoA}->[$row] }, $stuff; 

或者,如果要添加一个已知的指数元素,只需

$self->{AoA}->[$row]->[$column] = $stuff; 

你有做push @{$self->{AoA}}[$row]是你解引用数组问题1级过早。

+0

然后,除了在其中一个数组中插入东西外,还需要做些什么?或者我推错了方向? – claf 2012-02-19 23:26:50

+0

@claferri - 已更新,请检查此答案。对不起,保存太早 – DVK 2012-02-19 23:29:39

+0

谢谢,它的工作,我错了支架:) – claf 2012-02-19 23:41:07