【问题标题】:How to make a copy of a nested array in an array of array structure如何在数组结构的数组中制作嵌套数组的副本
【发布时间】:2016-04-12 22:13:45
【问题描述】:

我正在尝试制作嵌套数组的副本,看来我继续在尝试中进行引用。

更具体地说,我试图拥有一个数组数组,其中每个子数组都建立在前一个数组的基础上。这是我的尝试:

#!/usr/bin/perl -w
use strict;
use warnings;

my @aoa=[(1)];
my $i = 2;
foreach (@aoa){
  my $temp = $_;#copy current array into $temp
  push $temp, $i++;
  push @aoa, $temp;
  last if $_->[-1] == 5;
} 
#print contents of @aoa
foreach my $row (@aoa){
  foreach my $ele (@$row){
    print "$ele  ";
  }
  print "\n";
}

我的输出是:

1  2  3  4  5  
1  2  3  4  5  
1  2  3  4  5  
1  2  3  4  5  
1  2  3  4  5  

我希望/期望它是:

1
1 2
1 2 3
1 2 3 4 
1 2 3 4 5 

我假设我的问题在于我如何分配 $temp,如果不是这种情况,请告诉我。任何帮助表示赞赏。

【问题讨论】:

标签: arrays perl reference shallow-copy


【解决方案1】:

使用my 创建一个新数组,复制要构建的数组的内容,然后添加到它。

使其尽可能接近您的代码

foreach (@aoa) {
  last if $_->[-1] == 5;
  my @temp = @$_;         #copy current array into @temp
  push @temp, $i++;
  push @aoa, \@temp;
} 

【讨论】:

  • 或者如果你想使用匿名数组,push @aoa, [ @$_, $i++ ];
  • @ikegami 非常感谢您的编辑和评论,这好多了。
猜你喜欢
  • 1970-01-01
  • 2011-07-14
  • 2015-08-14
  • 1970-01-01
  • 2020-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-09
相关资源
最近更新 更多