コードを読みやすくしようとしているので、短いIFステートメントを使用することにしました。
これが機能しない(「ステートメントではない」)私のコードです:
jXPanel6.isVisible() ? jXPanel6.setVisible(true) : jXPanel6.setVisible(false);
これの何が問題になっていますか?ブラケットが必要ですか?どこ?
コードを読みやすくしようとしているので、短いIFステートメントを使用することにしました。
これが機能しない(「ステートメントではない」)私のコードです:
jXPanel6.isVisible() ? jXPanel6.setVisible(true) : jXPanel6.setVisible(false);
これの何が問題になっていますか?ブラケットが必要ですか?どこ?
回答:
「三元式」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);
<bool condition> ? true : false
<bool condition>
三項演算子は、代入の右側にのみ存在でき、それ自体のステートメントにはなりません。
他の人が示しているように、何かの形
x ? y : z
は式であり、(完全な)ステートメントではありません。これは、代入の右側や関数へのパラメーターなど、どこかで使用する必要がある右辺値です。
おそらくこれを見ることができます:http://download.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html
私はパーティーに少し遅れていますが、将来の読者のために。
私が言えることから、あなたはただ可視性の状態を正しく切り替えたいだけですか?!
演算子を使用しないのはなぜですか?
jxPanel6.setVisible(!jxPanel6.isVisible);
これはifステートメントではありませんが、例に関連するコードにはこのメソッドをお勧めします。