我在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