我是新手,Perl
我正在阅读有关数组的信息。
据我了解,数组会根据需要自动扩展(很酷!)
但我还读到我们可以使用负索引以相反的顺序访问数组。
例如,一个包含 3 个元素的数组可以按以下方式访问:
$array[0] $array[1] $array[2]
或
$array[-1] $array[-2] $array[-3]
(以相反的顺序)。
我的问题是小于-3
eg的值会发生什么$array[-5]
?
数组是扩展还是什么?
问问题
7100 次
3 回答
9
如果你读它,结果和读一样$array[5]
——值不存在,你得到一个 undef。向左走尽头和向右走尽头是一样的。
如果你写它,你会得到一个错误。数组只能自动向右扩展。
于 2013-04-09T20:02:17.770 回答
2
如果您读取该值,您将获得一个 undef 值。
use strict;
use warnings;
my @l = qw(A B C);
print $l[-4];
输出到 stderr(程序继续运行):
Use of uninitialized value in print at ./x.pl line 7.
或者:
my @l = qw(A B C);
print "undef" if !defined $l[-4];
输出:
undef
如果你想给它赋值你会得到一个错误:
my @l = qw(A B C);
$l[-4] = "d";
输出(程序退出):
Modification of non-creatable array value attempted, subscript -4 at ./x.pl line 7.
实际上可以修改间隔。所以一个数组可以开始任何值,而不仅仅是 0。
my @l = qw(A B C);
$[ = -4; # !!! Deprecated
print $l[-4], "\n";
print $l[-3], "\n";
输出:
A
B
于 2013-04-09T21:20:45.577 回答
0
你不能,它会抛出错误:
尝试修改不可创建的数组值,下标 -2
于 2013-04-09T19:57:39.967 回答