【发布时间】:2014-07-16 14:22:29
【问题描述】:
我试图理解拼接。 我想使用拼接一个一个地删除数组中的所有元素。但我得到的输出仍然很奇怪。我无法理解。谁能解释一下:
代码
my @arr1=(1,2,3,4,5,6,7,8,9,10);
foreach my $num(@arr1)
{
print $_ foreach (@arr1);
print "\n Popping $num\n";
print "[0] is $arr1[0] and current element is $num \n";
splice @arr1,0,1;
print "\n";
}
输出:
12345678910
Popping 1
[0] is 1 and current element is 1
2345678910
Popping 3
[0] is 2 and current element is 3
345678910
Popping 5
[0] is 3 and current element is 5
45678910
Popping 7
[0] is 4 and current element is 7
5678910
Popping 9
[0] is 5 and current element is 9
【问题讨论】:
-
为什么不使用
pop或shift? -
您正在执行的操作在 Perl 中称为
shift;pop将是splice(@arr1, -1)。另外,print是一个列表运算符,所以print $_ foreach (@arr1)可以更简单地写成print @arr1。 -
您可以使用
while ($_ = shift @array){print $_}将数组的元素一个一个地删除。 -
@slade:这个问题被简化为指出我在原始问题中面临的问题。在我最初的问题中,我根据一些逻辑决定是否删除该元素。所以它并不总是我想要删除的 [0]。并且 imo shift 总是只删除第 0 个元素,对吗?
标签: perl