你能解释一下这个嵌套的条件表达式吗?

IMP*_*TOR 1 perl conditional-operator

我无法破译这行代码.有人可以把它翻译成if/ else陈述吗?

我理解基本CONDITION ? VALUE_IF_TRUE : VALUE_IF_FALSE模式,但这条线似乎打破了这一点.

$type = $self->{1}{_flag} & 2 ?
    $self->{2}{_flag} & 2 ? "A" : "B" :
    $self->{2}{_flag} & 2 ? "B" : "C";
Run Code Online (Sandbox Code Playgroud)

Bor*_*din 6

我认为编写类似于运算符优先级远非显而易见的代码是不负责任的

使用if/ else和条件表达式的混合,它看起来更加清晰

if ( $self->{1}{_flag} & 2 ) {

    $type = $self->{2}{_flag} & 2 ? "A" : "B";
}
else {

    $type = $self->{2}{_flag} & 2 ? "B" : "C";
}
Run Code Online (Sandbox Code Playgroud)


ike*_*ami 5

尽管我还添加了一些括号以使其清晰可见,但只有几个换行符才能发挥作用。

$type = $self->{1}{_flag} & 2
   ? ( $self->{2}{_flag} & 2 ? "A" : "B" )
   : ( $self->{2}{_flag} & 2 ? "B" : "C" );
Run Code Online (Sandbox Code Playgroud)