有没有办法将值推送到负数组?
让我们说我做这样的事情......
my @arr;
push (@arr, "one");
push (@arr, "two");
push (@arr, "three");
$arr[-1] = "neg_one";
$arr[-2] = "neg_two";
$arr[-3] = "neg_three";
for (my $a=-3;$a<@arr;$a++){
print "Array[".$a."]::".$arr[$a]."\n";
}
# Return
Array[-3]::neg_three
Array[-2]::neg_two
Array[-1]::neg_one
Array[0]::neg_three
Array[1]::neg_two
Array[2]::neg_one
print "Array length: ".@arr."\n";
# Returns 3
那么,你能否将值映射到数组中的负索引?似乎对我有意义,如果我想说,在某事物的左边绘制一个值,将它放入负数组就可以了。那么最重要的是什么?我做错了还是这是一个非常糟糕的做法,原因我还没考虑过?
思想?
答案 0 :(得分:3)
Perl数组在索引零之前不能包含元素。使用小于零的索引访问相对于数组的 end 的元素,因此给定
my @arr = qw/ a b c d /
$arr[-1]
为d
,$arr[-2]
为c
等。
如果要存储函数的值,则应转换值,使它们从零开始,间隔为1。请注意,如果要为 x 的值存储 f(x)的值,并且间隔为0.1,则会出现类似的问题,但现在问题只是缩放而是比抵消。