繁体   English   中英

简短的 IF - ELSE 语句

[英]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);

三元运算符只能是赋值的右侧,而不是它自己的语句。

http://www.devdaily.com/java/edu/pj/pj010018/

我参加聚会有点晚了,但对于未来的读者来说。

据我所知,您只是想切换可见性状态,对吗? 为什么不直接使用! 操作员?

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM