如果条件为真则多个其他

时间:2016-05-31 13:31:19

标签: perl if-statement

我在else if语句中有多个elsif条件。

如果多个条件成立,语句的流程是什么?因此,在下面仅作为演示的简单示例中,是否达到了第二个elsif条件?

my $i = 1;

if ($i == 1){
}
elsif (i == 2){
}
elsif (i == 1){
}
else{
}

3 个答案:

答案 0 :(得分:5)

易于尝试:

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";
}

答案 1 :(得分:2)

系统从if语句开始并检查条件。如果为true,则执行语句的主体,然后跳过其余的else和else语句。如果为false,则向下移动到列出的第一个if语句。发生相同的过程:检查条件,如果为true执行正文并跳过剩余的其他if和else语句; if false跳到下一个if语句。

简而言之:从上到下按顺序选择else if语句。因此,如果你有两个if语句都是真的,那么只会执行前一个语句。

答案 2 :(得分:1)

第一场比赛将赢得其他esle / elsif区块被跳过。

不,不会到达第二个elsif块。