推入负数组

Push into negative array

有没有办法将值推入负数组?

假设我正在做这样的事情...

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

那么,你能不能不把一个值映射到数组中的负索引?对我来说似乎很有意义,如果我想说,在某物的左侧绘制一个值,将其放入负数组中就可以了。那么有什么大不了的?是我做错了,还是出于我没有考虑的原因,这是一种非常糟糕的做法?

想法?

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

my @arr = qw/ a b c d /

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

如果您想存储一个函数的值,那么您应该转换这些值,使它们从零开始并且间隔为一。请注意,如果您想以 0.1 的间隔为 x 的值存储 f(x) 的值,则会出现类似的问题,除了现在问题是缩放而不是偏移之一。