Ich versuche, meinen Code lesbarer zu machen, deshalb habe ich mich für einige kurze IF-Anweisungen entschieden.
Hier ist mein Code, der nicht funktioniert ("keine Aussage"):
jXPanel6.isVisible() ? jXPanel6.setVisible(true) : jXPanel6.setVisible(false);
Was ist daran falsch? Benötigen Sie Klammern? Wo?
java
if-statement
monczek
quelle
quelle
Antworten:
Der "ternäre Ausdruck"
x ? y : z
kann nur für die bedingte Zuweisung verwendet werden . Das heißt, Sie könnten so etwas tun:weil der ternäre Ausdruck etwas zurückgibt (vom Typ
String
in diesem Beispiel).Es ist nicht wirklich als kurze Inline gedacht
if-else
. Insbesondere können Sie es nicht verwenden, wenn die einzelnen Teile keinen Wert oder Werte inkompatibler Typen zurückgeben. (Während Sie dies tun könnten, wenn beide Methoden zufällig denselben Wert zurückgeben, sollten Sie ihn nicht nur zu Nebenwirkungszwecken aufrufen.)Der richtige Weg, dies zu tun, wäre also nur ein if-else-Block:
was natürlich verkürzt werden kann
Diese beiden letzteren Ausdrücke sind für mich besser lesbar, da sie klarer kommunizieren, was Sie versuchen zu tun. (Und übrigens, haben Sie Ihre Bedingungen falsch herum verstanden? Es sieht so aus, als wäre dies sowieso ein No-Op und kein Toggle).
Verwechseln Sie nicht die geringe Anzahl von Zeichen mit der Lesbarkeit . Der entscheidende Punkt ist das, was am leichtesten zu verstehen ist; und ein leichter Missbrauch von Sprachmerkmalen ist ein eindeutiger Weg, um die Leser zu verwirren oder sie zumindest zu einer mentalen Doppelaufnahme zu bewegen.
quelle
oder in deiner Form:
quelle
<bool condition> ? true : false
weil es genau gleichbedeutend ist mit nur<bool condition>
.Der ternäre Operator kann nur die rechte Seite einer Zuweisung sein und keine eigene Anweisung.
http://www.devdaily.com/java/edu/pj/pj010018/
quelle
Wie andere angedeutet haben, etwas von der Form
ist ein Ausdruck, keine (vollständige) Aussage. Es ist ein Wert, der irgendwo verwendet werden muss - wie auf der rechten Seite einer Zuweisung oder ein Parameter für eine Funktion usw.
Vielleicht könnten Sie sich das ansehen: http://download.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html
quelle
Ich bin etwas spät zur Party, aber für zukünftige Leser.
Nach allem, was ich sagen kann, möchten Sie nur den Sichtbarkeitsstatus umschalten, oder? Warum nicht einfach den
!
Operator benutzen ?Es ist keine if-Anweisung, aber ich bevorzuge diese Methode für Code, der sich auf Ihr Beispiel bezieht.
quelle
Sie können es so einfach machen, ich habe es in Reaktionshaken gemacht:
es war gleich so lange wenn Funktion unten:
Hoffe es hilft ^ _ ^
quelle