Staram się, aby mój kod był bardziej czytelny, więc zdecydowałem się użyć krótkich instrukcji IF.
Oto mój kod, który nie działa („nie jest to instrukcja”):
jXPanel6.isVisible() ? jXPanel6.setVisible(true) : jXPanel6.setVisible(false);
Co w tym złego? Potrzebuje nawiasów? Gdzie?
java
if-statement
monczek
źródło
źródło
Odpowiedzi:
„Wyrażenie trójskładnikowe”
x ? y : z
może być używane tylko do przypisania warunkowego . Oznacza to, że możesz zrobić coś takiego:String mood = inProfit() ? "happy" : "sad";
ponieważ wyrażenie trójargumentowe zwraca coś (typu
String
w tym przykładzie).Tak naprawdę nie ma być używany jako krótki, liniowy
if-else
. W szczególności nie można go użyć, jeśli poszczególne części nie zwracają wartości lub zwracają wartości niezgodnych typów. (Więc chociaż możesz to zrobić, jeśli obie metody zwracają tę samą wartość, nie powinieneś wywoływać jej tylko w celu uzyskania efektu ubocznego).Zatem właściwym sposobem na zrobienie tego byłoby użycie bloku if-else:
if (jXPanel6.isVisible()) { jXPanel6.setVisible(true); } else { jXPanel6.setVisible(false); }
który oczywiście można skrócić do
Oba te ostatnie wyrażenia są dla mnie bardziej czytelne, ponieważ wyraźniej wyrażają to, co próbujesz zrobić. (Nawiasem mówiąc, czy twoje warunki były niewłaściwe? Wygląda na to, że to nie jest operacja, a nie przełącznik).
Nie myl małej liczby znaków z czytelnością . Kluczową kwestią jest to, co jest najłatwiejsze do zrozumienia; a lekkie nadużywanie cech językowych jest zdecydowanym sposobem na zdezorientowanie czytelników lub przynajmniej zmusić ich do zastanowienia się.
źródło
lub w swoim formularzu:
jXPanel6.setVisible(jXPanel6.isVisible()?true:false);
źródło
<bool condition> ? true : false
ponieważ jest to dokładnie równoważne z just<bool condition>
.Operator trójskładnikowy może być tylko prawą stroną przypisania, a nie własnym oświadczeniem.
http://www.devdaily.com/java/edu/pj/pj010018/
źródło
Jak wskazywali inni, coś w formie
jest wyrażeniem, a nie (kompletną) instrukcją. Jest to wartość r, która musi zostać gdzieś wykorzystana - na przykład po prawej stronie przypisania, parametr funkcji itp.
Być może możesz spojrzeć na to: http://download.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html
źródło
Trochę spóźniłem się na imprezę, ale dla przyszłych czytelników.
Z tego, co mogę powiedzieć, chcesz tylko przełączyć stan widoczności, prawda? Dlaczego po prostu nie skorzystać z
!
operatora?To nie jest instrukcja if, ale wolę tę metodę dla kodu związanego z twoim przykładem.
źródło
Możesz to zrobić tak prosto, zrobiłem to w hookach:
(myNumber == 12) ? "true" : "false"
była równa tej długiej funkcji if poniżej:
if (myNumber == 12) { "true" } else { "false" }
Mam nadzieję, że to pomoże ^ _ ^
źródło