1

(Perl 中的 EG)当条件 A 或条件 B 具有相同的结果时

if (A){
    # Consequence X
}elsif (B){
    # Consequence X
}

我们可以写

if ( A || B ) {
     # Consequence X
}

我们有以下条件怎么样:当 A 和 C 为真,或 B 和 C 为真时,结果 C 随之而来。

这可以写得很长:

if ( A && C){
      # Consequence X
} elsif (B && C ){
      # consequence X
}

我的问题是,有没有办法把这个写得更短?像这样的东西:

if ( (A && C) || (B && C) ) 

语法上没问题???

4

2 回答 2

8

是的。

if ( A && C){
      # Consequence X
} elsif (B && C ){
      # consequence X
}

是相同的:

if ( (A && C) || (B && C) ){
    #Consequence X
}

这避免了C两次评估:

if ( (A || B) && C){
    #Consequence X
}

顺便说一句,这更像是一个逻辑问题,这里的逻辑不仅限于 Perl。

于 2013-08-26T07:08:52.507 回答
3

尝试以下操作:

if (C && (A || B)) {
}
于 2013-08-26T07:09:52.370 回答