Estoy tratando de hacer que mi código sea más legible, así que decidí usar algunas declaraciones IF cortas.
Aquí está mi código que no funciona ("no es una declaración"):
jXPanel6.isVisible() ? jXPanel6.setVisible(true) : jXPanel6.setVisible(false);
¿Qué pasa con esto? ¿Necesita corchetes? ¿Dónde?
java
if-statement
Monczek
fuente
fuente
Respuestas:
La "expresión ternaria"
x ? y : z
solo se puede utilizar para asignación condicional . Es decir, podrías hacer algo como:String mood = inProfit() ? "happy" : "sad";
porque la expresión ternaria está devolviendo algo (de tipo
String
en este ejemplo).Realmente no está destinado a ser utilizado como un corto, en línea
if-else
. En particular, no puede usarlo si las partes individuales no devuelven un valor o devuelven valores de tipos incompatibles. (Por lo tanto, si bien podría hacer esto si ambos métodos devuelven el mismo valor, no debe invocarlo solo para efectos secundarios).Entonces, la forma correcta de hacer esto sería con un bloque if-else:
if (jXPanel6.isVisible()) { jXPanel6.setVisible(true); } else { jXPanel6.setVisible(false); }
que por supuesto se puede acortar a
Ambas últimas expresiones son, para mí, más legibles porque comunican más claramente lo que estás tratando de hacer. (Y, por cierto, ¿obtuviste tus condiciones al revés? De todos modos, parece que esto no es una operación, en lugar de una alternancia).
No mezcle el número bajo de caracteres con la legibilidad . El punto clave es lo que se comprende más fácilmente; y el uso indebido leve de las características del lenguaje es una forma definitiva de confundir a los lectores, o al menos hacer que se equivoquen mentalmente.
fuente
o en tu forma:
jXPanel6.setVisible(jXPanel6.isVisible()?true:false);
fuente
<bool condition> ? true : false
porque es exactamente equivalente a just<bool condition>
.El operador ternario solo puede ser el lado derecho de una asignación y no una declaración propia.
http://www.devdaily.com/java/edu/pj/pj010018/
fuente
Como han indicado otros, algo de la forma
es una expresión, no una declaración (completa). Es un valor r que debe usarse en algún lugar, como en el lado derecho de una asignación, o un parámetro para una función, etc.
Quizás puedas mirar esto: http://download.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html
fuente
Llego un poco tarde a la fiesta pero para futuros lectores.
Por lo que puedo decir, solo quieres cambiar el estado de visibilidad, ¿verdad? ¿Por qué no utilizar simplemente el
!
operador?No es una declaración if, pero prefiero este método para el código relacionado con su ejemplo.
fuente
Puedes hacerlo tan simple como esto, lo hice en react hooks:
(myNumber == 12) ? "true" : "false"
era igual a esta función larga if a continuación:
if (myNumber == 12) { "true" } else { "false" }
Espero que ayude ^ _ ^
fuente