考慮下面的代碼:
my @candidates = get_candidates($marker);
CANDIDATE:
for my $i (0..$#candidates) {
next CANDIDATE if open_region($i);
$candidates[$i] = $incumbent{ $candidates[$i]{region} };
}
什麼是在第3行意義$#
?
考慮下面的代碼:
my @candidates = get_candidates($marker);
CANDIDATE:
for my $i (0..$#candidates) {
next CANDIDATE if open_region($i);
$candidates[$i] = $incumbent{ $candidates[$i]{region} };
}
什麼是在第3行意義$#
?
由於候選人是一個數組,$#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";
}
啊......謝謝:) .. –
它是數組最後一個索引的值(在你的情況下它是最後一個候選索引)。
在perl中,我們有幾種獲取數組大小的方法,比如print @ arr,print標量(@arr),print $#arr + 1等等。沒有理由,只是使用它。你會得到在與perl進一步聯繫的過程中熟悉perl中的一些默認用法。不像C++/java,perl使用大量的
特殊表達式來簡化我們的編碼,但有時它總是讓我們更加困惑。
你應該在這裏評論/提出問題之前已經經歷了基本。 – pkm
@dev kumar:順便說一下,'$#arrayname'也可以用在賦值的左邊來改變最高索引號,擴展或截斷一個數組(不經常使用)。 – cdarke
@cdarke謝謝:) –