我的问题基本上是一个技术问题;
如果我想将一个元素添加到二维数组中,我会这样做:
$array[$i][$#{$a[$i]}+1]=$new_scalar_to_add;
这是一种正确的方法
我现在通常对于一维数组,可以通过push
将元素添加到数组中作为
push(@array, $new_scalar_to_add);
我的问题是,有一种更好的方法可以将元素添加到数组中,或者这两种方法是等效的吗?
答案 0 :(得分:4)
推送有什么问题?
perl -MData::Dumper -E'
@arr = ([1,2,3],[6,5,4],[7,8,9]);
push @{ $arr[$_] }, int rand 9 for (0..$#arr);
say Dumper \@arr;
'
你的方法不起作用,因为$#array
表示“数组最后一个元素的数量”,你不添加新元素,只需重新定义最后一个元素。
perl -MData::Dumper -E'
@arr = ([1,2,3],[6,5,4],[7,8,9]);
$arr[1][$#arr] = 777;
say Dumper \@arr;
'
如果要添加,则需要使用$#array+1
或scalar @array
语法。更好地使用push
。