【发布时间】:2015-09-04 23:35:10
【问题描述】:
我正在尝试使用splice 来获取一个数组,该数组是另一个数组的子集,但有些东西不起作用。以下代码为 splice (1, -3) 的一对参数返回值 67,而不是数组 34 67。为什么?
#!/usr/bin/perl
my @a = (99999, 34,67,976,432,99999);
my $length = scalar(@a);
for ($counter = 0; $counter<=$length; $counter++){
my $max = max(-3 + $counter, 1);
print "$max\n";
my $second_counter = -($length - $counter);
print "$second_counter\n";
my @worker = splice @a, $max, $second_counter;
print "@worker\n";
}
【问题讨论】:
-
splice @a, 1, -3确实在该数组中返回(34, 67),问题出在计数器的其他地方,而不是splice。代码正在运行,按照您的要求执行 :-) 问题:您是否希望在第一次迭代中实现1, -3? -
@sidyll 不,我不希望它在第一次迭代中实现,但我只是不明白 for 循环怎么可能不返回这个子集应该的初始数组。