我想知道这个代码在三元运算符
中是怎么样的if (a) {
// pass
} else {
b();
}
当a为真时,我们没有(事物)代码执行,但如果a为假,则有一些代码b()然后执行。
所以我们写下:
a ? : b();
但是当你让代码为真空或者你必须用某些东西替换它时,我不确定这是否正确。实际上我从不使用三元运算符,但我们被要求这样做。
答案 0 :(得分:7)
这不是条件运算符的用途......它不执行一个语句或另一个,它是评估一个表达式或其他,并将其作为表达式的结果。
您应该将代码编写为:
if (!a) {
b();
}
实际上我从不使用三元运算符,但我们被要求这样做。
如果你被要求为这种特殊情况这样做,那么我会非常警惕那些要求你这样做的人。我的猜测实际上并不是这种情况......
答案 1 :(得分:2)
如果您尝试过此代码,那么您将遇到编译器错误,因为三元运算符需要表达式而不是语句。 true
部分甚至没有表达式或语句。如果b()
返回void
,则false
部分是语句,而不是表达式。如果b()
返回某些内容,那么它可以被视为表达式,它就可以了。
如果要执行语句,并且不必选择表达式值,则在三元运算符上选择if / else。您的第一个if / else可以简化为:
if (!a)
{
b();
}
答案 2 :(得分:1)
这是不可能的。摘自官方Oracle Docs:
http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.25
条件运算符? :使用一个表达式的布尔值 决定应该评估两个其他表达式中的哪一个。
ConditionalExpression: ConditionalOrExpression ConditionalOrExpression ? Expression : ConditionalExpression
"三元"的定义是"由3部分组成"。如果您只想对一个条件进行一次评估,那么您只需要使用if语句。