写作(A && C)|| (B && C)条件更短

ado*_*ado 1 perl logic

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

if (A){
    # Consequence X
}elsif (B){
    # Consequence X
}
Run Code Online (Sandbox Code Playgroud)

我们可以写

if ( A || B ) {
     # Consequence X
}
Run Code Online (Sandbox Code Playgroud)

我们如何具备以下条件:当A和C为真,或者B和C为真时,结果C如下.

这可写得很长:

if ( A && C){
      # Consequence X
} elsif (B && C ){
      # consequence X
}
Run Code Online (Sandbox Code Playgroud)

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

if ( (A && C) || (B && C) ) 
Run Code Online (Sandbox Code Playgroud)

语法上确定???

Yu *_*Hao 8

是.

if ( A && C){
      # Consequence X
} elsif (B && C ){
      # consequence X
}
Run Code Online (Sandbox Code Playgroud)

是相同的:

if ( (A && C) || (B && C) ){
    #Consequence X
}
Run Code Online (Sandbox Code Playgroud)

这避免了C两次评估:

if ( (A || B) && C){
    #Consequence X
}
Run Code Online (Sandbox Code Playgroud)

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