1

考虑以下代码:

my @candidates = get_candidates($marker);
CANDIDATE:
for my $i (0..$#candidates) {
  next CANDIDATE if open_region($i);
  $candidates[$i] = $incumbent{ $candidates[$i]{region} };
}

第3行是什么意思$#

4

4 回答 4

6

它是数组上最后一个索引的值(在您的情况下,它是候选人的最后一个索引)。

于 2013-10-17T08:05:11.473 回答
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";
               }
于 2013-10-17T08:03:05.817 回答
4

这意味着array_size - 1。它与 相同(scalar @array) - 1

于 2013-10-17T08:03:34.880 回答
2

在perl中,我们有几种获取数组大小的方法,比如打印@arr,打印标量(@arr),打印$#arr+1等等。没有理由,直接用就行了。你会熟悉一些默认的在你进一步接触perl的过程中在perl中的使用。与C++/java不同,perl使用了很多
特殊的表达方式来简化我们的编码,但有时它总是让我们更加困惑。

于 2013-10-17T08:16:34.560 回答