三元从句中连续两个问号是什么意思?
最近在一段Java代码中看到了这个三元运算语句:
int getVal(Integer number, boolean required) {
Integer val = number == null ? required ? 1 : 2 : 3;
return val;
}
我从未见过像这样连续有两个问号的三元语句(没有任何括号)。如果我使用输入值,我可以1返回 ifnumber == null并3返回,但似乎不需要什么,2永远不会返回。
这个语句是什么意思(即我应该如何将它读作true/false条件的单词语句)以及需要2返回的输入是什么?
回答
这就是为什么明确添加括号总是一个好主意的原因,因此意图一目了然:
Integer val = number == null ? (required ? 1 : 2) : 3;
回答
它只是一个嵌套的三元语句。添加括号更清楚:
number == null ? (required ? 1 : 2) : 3;
返回 2 需要什么输入?
number = null 和 required = false