Краткое заявление IF-ELSE


Я пытаюсь сделать свой код более читаемым, поэтому я решил использовать некоторые короткие операторы IF.

вот мой код, который не работает ("не утверждение"):

jXPanel6.isVisible() ? jXPanel6.setVisible(true) : jXPanel6.setVisible(false);

что в этом плохого? Нужны скобки? Куда?

5 68

5 ответов:

"троичное выражение"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/

как указывали другие, что-то из формы

x ? y : z

- это выражение, а не (полностью) заявление. Это значение rvalue, которое должно использоваться где-то-например, в правой части назначения или параметра функции и т. д.

возможно, вы могли бы посмотреть на это: http://download.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html

Я немного опоздал на вечеринку, но для будущих читателей.

из того, что я могу сказать, вы просто хотите переключить состояние видимости правильно? Почему бы просто не использовать ! оператор?

jxPanel6.setVisible(!jxPanel6.isVisible);

это не оператор if, но я предпочитаю этот метод для кода, связанного с вашим примером.