请考虑以下代码:
my @candidates = get_candidates($marker);
CANDIDATE:
for my $i (0..$#candidates) {
next CANDIDATE if open_region($i);
$candidates[$i] = $incumbent{ $candidates[$i]{region} };
}
第3行是什么意思$#
?
答案 0 :(得分:6)
它是数组上最后一个索引的值(在您的情况下,它是候选者的最后一个索引)。
答案 1 :(得分:5)
由于候选者是一个数组,$#candidates
是最大的索引(元素数量 - 1)
例如:
my @x = (4,5,6);
print $#x;
将打印2
,因为这是最大的索引。
请注意,如果数组为空,$#candidates
将为-1
编辑:来自perldoc perlvar
:
$# is also used as sigil, which, when prepended on the name of
an array, gives the index of the last element in that array.
my @array = ("a", "b", "c");
my $last_index = $#array; # $last_index is 2
for my $i (0 .. $#array) {
print "The value of index $i is $array[$i]\n";
}
答案 2 :(得分:4)
这意味着array_size - 1
。它与(scalar @array) - 1
相同。
答案 3 :(得分:2)
在perl中,我们有几种方法可以获得数组大小,例如print @ arr,print scalar(@arr),print $#arr + 1等等。没有理由,只需使用它。你会熟悉的在你与perl的进一步联系中使用perl中的一些默认用法。与C ++ / java不同,perl使用了很多
特殊表达式,以简化我们的编码,但有时它总是让我们更加困惑。