[英]Short IF - ELSE statement
我试图让我的代码更具可读性,所以我决定使用一些简短的 IF 语句。
这是我的代码不起作用(“不是声明”):
jXPanel6.isVisible() ? jXPanel6.setVisible(true) : jXPanel6.setVisible(false);
这有什么问题? 需要括号吗? 哪里?
“三元表达式” x ? y : z
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);
三元运算符只能是赋值的右侧,而不是它自己的语句。
我参加聚会有点晚了,但对于未来的读者来说。
据我所知,您只是想切换可见性状态,对吗? 为什么不直接使用!
操作员?
jxPanel6.setVisible(!jxPanel6.isVisible);
这不是 if 语句,但我更喜欢这种与您的示例相关的代码的方法。
正如其他人所指出的,某种形式
x ? y : z
是一个表达式,而不是(完整的)语句。 它是一个需要在某个地方使用的右值 - 例如在赋值的右侧,或函数的参数等。
也许你可以看看这个: http : //download.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html
你可以像这样简单地做到这一点,我在 react hooks 中做到了:
(myNumber == 12) ? "true" : "false"
它等于下面这个长的 if 函数:
if (myNumber == 12) {
"true"
} else {
"false"
}
希望对你有帮助^_^
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.