我试图让我的代码更具可读性,所以我决定使用一些简短的IF语句。
这是我的代码不起作用(“不是声明”):
jXPanel6.isVisible() ? jXPanel6.setVisible(true) : jXPanel6.setVisible(false);
这有什么问题?需要括号?在哪里?
答案 0 :(得分:201)
“三元表达式”x ? y : z
只能用于条件赋值。也就是说,您可以执行以下操作:
String mood = inProfit() ? "happy" : "sad";
因为三元表达式返回了某些内容(在此示例中为String
类型)。
这并不意味着用作简短的内联if-else
。特别是,如果各个部分未返回值,或返回不兼容类型的值,则无法使用它。 (所以虽然如果两种方法碰巧都返回相同的值,你可以这样做,但不应仅为了副作用而调用它。)
所以正确的方法是使用if-else块:
if (jXPanel6.isVisible()) {
jXPanel6.setVisible(true);
}
else {
jXPanel6.setVisible(false);
}
当然可以缩短为
jXPanel6.setVisible(jXPanel6.isVisible());
对我而言,后两种表达方式都更具可读性,因为它们更清楚地传达了您正在尝试做的事情。 (顺便说一句,你是否以错误的方式得到了你的条件?无论如何这看起来都是无操作的,而不是切换)。
请勿将低字符数与可读性混淆。关键点是最容易理解的;而轻度误用语言特征是一种让读者迷惑的明确方式,或至少让他们做一次精神上的双重打击。
答案 1 :(得分:27)
jXPanel6.setVisible(jXPanel6.isVisible());
或以您的形式:
jXPanel6.setVisible(jXPanel6.isVisible()?true:false);
答案 2 :(得分:3)
三元运算符只能是赋值的右侧而不是它自己的声明。
答案 3 :(得分:3)
正如其他人所指出的那样,某种形式
x ? y : z
是表达式,而不是(完整)语句。它是一个rvalue,需要在某个地方使用 - 比如在赋值的右侧,或者函数的参数等。
也许您可以看一下:http://download.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html
答案 4 :(得分:2)
我对派对来说有点晚了,但对于未来的读者来说。
据我所知,您只是想切换可见性状态吗?为什么不使用!
运算符?
jxPanel6.setVisible(!jxPanel6.isVisible);
这不是if语句,但我更倾向于使用此方法来处理与您的示例相关的代码。
答案 5 :(得分:1)
您可以像这样简单地完成它,我是在react钩子中完成的:
(myNumber == 12) ? "true" : "false"
如果下面的函数等于这个长度:
if (myNumber == 12) {
"true"
} else {
"false"
}
希望对您有帮助^ _ ^