推入负数组

时间:2015-02-01 20:01:25

标签: arrays perl negative-number

有没有办法将值推送到负数组?

让我们说我做这样的事情......

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

那么,你能否将值映射到数组中的负索引?似乎对我有意义,如果我想说,在某事物的左边绘制一个值,将它放入负数组就可以了。那么最重要的是什么?我做错了还是这是一个非常糟糕的做法,原因我还没考虑过?

思想?

1 个答案:

答案 0 :(得分:3)

Perl数组在索引零之前不能包含元素。使用小于零的索引访问相对于数组的 end 的元素,因此给定

my @arr = qw/ a b c d /

$arr[-1]d$arr[-2]c等。

如果要存储函数的值,则应转换值,使它们从零开始,间隔为1。请注意,如果要为 x 的值存储 f(x)的值,并且间隔为0.1,则会出现类似的问题,但现在问题只是缩放而是比抵消。