我试图使代码更具可读性,所以我决定使用一些简短的IF语句。
这是我的无效代码(“不是声明”):
jXPanel6.isVisible() ? jXPanel6.setVisible(true) : jXPanel6.setVisible(false);
这怎么了 需要括号吗?哪里?
我试图使代码更具可读性,所以我决定使用一些简短的IF语句。
这是我的无效代码(“不是声明”):
jXPanel6.isVisible() ? jXPanel6.setVisible(true) : jXPanel6.setVisible(false);
这怎么了 需要括号吗?哪里?
Answers:
“三元表达式”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());
对我而言,后两种表达方式更具可读性,因为它们可以更清楚地传达您正在尝试执行的操作。(顺便说一句,您是否以错误的方式获得了您的条件?无论如何,这看起来像是无操作,而不是拨动开关)。
不要把字符数少和可读性混在一起。关键是最容易理解的东西。并轻度滥用语言功能是迷惑读者的一种明确方法,或者至少使他们产生了心理上的双重误读。
jXPanel6.setVisible(jXPanel6.isVisible());
或以您的形式:
jXPanel6.setVisible(jXPanel6.isVisible()?true:false);
<bool condition> ? true : false
,因为它是完全等同于刚<bool condition>
。
三元运算符只能是赋值的右侧,而不能是其自身的语句。
正如其他人指出的那样,某种形式
x ? y : z
是一个表达式,而不是(完整的)语句。这是一个需要在某个地方使用的右值-例如在赋值的右侧,或者函数的参数等。
也许您可以看一下:http : //download.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html
我参加聚会有点晚了,但对于未来的读者来说。
据我所知,您只是想正确切换可见性状态?为什么不只使用!
运算符?
jxPanel6.setVisible(!jxPanel6.isVisible);
这不是一个if语句,但是对于与您的示例相关的代码,我更喜欢这种方法。