Sto cercando di rendere il mio codice più leggibile, quindi ho deciso di utilizzare alcune brevi istruzioni IF.
Ecco il mio codice che non funziona (“non una dichiarazione”):
jXPanel6.isVisible() ? jXPanel6.setVisible(true) : jXPanel6.setVisible(false);
Cosa c’è di sbagliato in questo? Bisogno di parentesi? Dove?
La “espressione ternaria” x ? y : z
x ? y : z
può essere utilizzato solo per l’ assegnazione condizionale. Cioè, potresti fare qualcosa come:
String mood = inProfit() ? "happy" : "sad";
perché l’espressione ternaria restituisce qualcosa (di tipo String
in questo esempio).
In realtà non è pensato per essere usato come un breve, in-line if-else
. In particolare, non è ansible utilizzarlo se le singole parti non restituiscono un valore o restituiscono valori di tipi incompatibili. (Quindi, mentre è ansible farlo se entrambi i metodi hanno restituito lo stesso valore, non è necessario richiamarlo solo per gli effetti collaterali).
Quindi il modo corretto per farlo sarebbe solo con un blocco if-else:
if (jXPanel6.isVisible()) { jXPanel6.setVisible(true); } else { jXPanel6.setVisible(false); }
che ovviamente può essere abbreviato
jXPanel6.setVisible(jXPanel6.isVisible());
Entrambe queste ultime espressioni sono, per me, più leggibili in quanto comunicano più chiaramente ciò che stai cercando di fare. (E a proposito, hai sbagliato le tue condizioni? Sembra che questo sia un no-op in ogni caso, piuttosto che un interruttore).
Non confondere il basso numero di caratteri con la leggibilità . Il punto chiave è ciò che è più facilmente comprensibile; e il maltrattamento delle caratteristiche linguistiche è un modo preciso per confondere i lettori, o almeno farli fare un doppio gioco mentale.
jXPanel6.setVisible(jXPanel6.isVisible());
o nella tua forma:
jXPanel6.setVisible(jXPanel6.isVisible()?true:false);
L’operatore ternario può essere solo il lato destro di un compito e non una sua propria affermazione.
Come altri hanno indicato, qualcosa della forma
x ? y : z
è un’espressione, non un’affermazione (completa). È un valore che deve essere usato da qualche parte – come sul lato destro di un compito, o un parametro su una funzione, ecc.
Forse potresti dare un’occhiata a questo: http://download.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html
Sono un po ‘in ritardo per la festa ma per i futuri lettori.
Da quello che posso dire, vuoi semplicemente triggersre lo stato di visibilità giusto? Perché non usare solo il !
operatore?
jxPanel6.setVisible(!jxPanel6.isVisible);
Non è un’istruzione if, ma preferisco questo metodo per il codice relativo al tuo esempio.