Perl对象中的数组数组

时间:2012-02-19 23:20:06

标签: arrays perl perl-data-structures

我正在尝试在Perl对象中使用数组数组,但仍然没有得到它的工作原理。

这是构造函数:

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

以下是将内容插入AoA的代码部分:

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

我仍然无法在构造函数中定义数组数组的路上找到任何东西。

1 个答案:

答案 0 :(得分: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;

或者,如果要添加known-index元素,只需

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

您执行push @{$self->{AoA}}[$row]时遇到的问题是您过早地取消引用了数组1级别。