この場合、三項演算子をメソッドのように考えてください。 ;人々はx = a ? b : c
のようなものを言うことができる理由
ternary(a, b, c)
if a
return b
else
return c
である:a ? b : c
は、擬似コードのメソッドを呼び出すのと同じ(あなたが検討しているの意図や目的のために、lasseespeholtのコメントを参照)であると言って基本的にはx = ternary(a, b, c)
と言っているようです。あなたが(condition) ? doThis() : doThat()
を言うとき、あなたは実際にしていると言って:
if condition
return doThis()
else
return doThat()
は、我々は、彼らが
if condition
return ???
else
return ???
を返す何のための方法を代用しようとした場合それも、それを考慮しても意味がありません。何が起こるか見て。 Javaはあなたの文で何をすべきかを知っていると文句を言うしないので、void
がインスタンス化タイプではないので、doThis()
とdoThat()
は、何も返さないので、ternary
方法は、どちらか何かを返すことはできません。
あり、この回避する方法がありますが、彼らはすべての(あなたがして、戻り値を持っているあなたの方法を変更することができますが、彼らは返すものと何もしない、あなたのメソッドを呼び出す新しいメソッドを作成することができますし、悪い習慣ですnullを返すなど)。この場合、if
ステートメントを使用するほうがはるかに優れています。
EDITはさらに、さらに大きな問題があります。たとえあなたが値を返していたとしても、Javaはどんな意味でもa ? b : c
とはみなされません。
いいえ、そうではありません。普通の人のように 'if'を使うだけです。 –
私は、三項演算子は、条件のチェックで型のインスタンスに値を代入すると考えています。あなたがそれを示唆している方法はフォーマットを満足させるものではありません。 –
@codeparkle - たくさんのスペースはありません。 if(条件){doThis();} else {doThat();} – tehdoommarine