【发布时间】:2023-03-16 23:03:01
【问题描述】:
我又一次忘记了如何让$_ 在二维数组的循环中表示一个数组。
foreach(@TWO_DIM_ARRAY){
my @ARRAY = $_;
}
这就是意图,但这不起作用。这样做的正确方法是什么?
【问题讨论】:
-
你能显示你开始的数据和你想要结束的数据吗,即使是伪代码?
标签: arrays perl multidimensional-array
我又一次忘记了如何让$_ 在二维数组的循环中表示一个数组。
foreach(@TWO_DIM_ARRAY){
my @ARRAY = $_;
}
这就是意图,但这不起作用。这样做的正确方法是什么?
【问题讨论】:
标签: arrays perl multidimensional-array
my @ARRAY = @$_; 行(而不是 = $_;)是您要查找的内容,但除非您明确想要复制引用的数组,否则我会直接使用 @$_。
好吧,实际上我根本不会使用$_,特别是因为您可能想要遍历@$_,然后您在内循环中也使用隐式$_,然后您可以搞不清楚哪个$_ 是哪个,或者这是否合法。这可能就是您最初复制到@ARRAY 的原因。
不管怎样,我会这样做:
for my $array_ref (@TWO_DIM_ARRAY) {
# You can iterate through the array:
for my $element (@$array_ref) {
# do whatever to $element
}
# Or you can access the array directly using arrow notation:
$array_ref->[0] = 1;
}
【讨论】:
@{$_} 与 @$_ 相同。例如,我刚试过这个:my @A=([1,2,3],[4,5,6],[7,8,9]); foreach(@A) { print join(",", @{$_}), "\n"; }
for (@TWO_DIM_ARRAY) {
my @arr = @$_;
}
【讨论】:
$_ 将是数组references(不是arrays),因此您需要将其取消引用为:
my @ARRAY = @$_;
【讨论】: