我在else if語句中有多個elsif
條件。其他多個條件如果條件爲真
如果多個條件爲真,語句的流程是什麼?那麼在下面這個僅僅作爲示範的簡單例子中,是否達到了第二個elsif條件?
my $i = 1;
if ($i == 1){
}
elsif (i == 2){
}
elsif (i == 1){
}
else{
}
我在else if語句中有多個elsif
條件。其他多個條件如果條件爲真
如果多個條件爲真,語句的流程是什麼?那麼在下面這個僅僅作爲示範的簡單例子中,是否達到了第二個elsif條件?
my $i = 1;
if ($i == 1){
}
elsif (i == 2){
}
elsif (i == 1){
}
else{
}
容易嘗試:
use feature ":5.10";
my $i = 1;
if ($i == 1) {
say "A"; # this is the only branch executed
} elsif (i == 2) {
say "B";
} elsif (i == 1) {
say "C";
} else {
say "D";
}
每個elsif
如果以前的條件沒有成功,才考慮。您可以看到,甚至沒有嘗試進行比較:
if ($i == 1) {
say "A";
} elsif (i == 2/0) { # This doesn’t blow up since the comparison is never tried
say "B";
} else {
say "C";
}
(我認爲'2/0'在編譯時死掉,因爲那是在評估'2/0'時,但現在這個異常被延遲了。) – ikegami
系統從if語句開始並檢查條件。如果它是真的,它會執行語句的主體,然後跳過其餘的else語句和else語句。如果它是假的,它會下移到第一個else語句列出。同樣的過程發生:檢查條件,如果是true執行正文並跳過其餘的if和else語句;如果錯誤跳轉到下一個else語句。
總之:else if語句從上到下依次選擇。所以,如果你有兩個如果兩個都是真的語句,只有最高的一個會被執行。
第一場比賽將贏得其他esle/elsif塊被跳過。
不,第二個elsif
塊將無法到達。
一旦條件成功,測試就會停止,這意味着'$ i = 1'時從未測試過第二個'$ i == 1'。 –
五年來我還沒有寫過別的。我想不出一個elsif。 – k0pernikus