今日は小さなテストを行いました。
> false && 1 || 2
> 2
> true && 1 || 2
> 1
では、すでに2項演算子を使用できるのであれば、なぜ3項が必要だったのでしょうか。
> false ? 1 : 2
> 2
> true ? 1 : 2
> 1
これは単なるエイリアスではなく、解析を複雑にするためです。
今日は小さなテストを行いました。
> false && 1 || 2
> 2
> true && 1 || 2
> 1
では、すでに2項演算子を使用できるのであれば、なぜ3項が必要だったのでしょうか。
> false ? 1 : 2
> 2
> true ? 1 : 2
> 1
これは単なるエイリアスではなく、解析を複雑にするためです。
あなたの質問の特定のケースに対処するには…</p>
1
異なる値、つまりfalseと評価された値があった場合はどうなりますか?
そして一般的に:
いいえ。三項演算子はいつでもif/else
構文に置き換えることができます。しかし、それはそれほど便利ではありません。
言語に三項演算子は必要ありません。
三項演算子は、よく知られている言語構造です。IMOの人々は一般的に、スクリプトっぽい(見た目が良い)言語でそれを期待しているので、そうです。私はそれを持っていない大きな理由はわかりません。
if
/else
はステートメントであるため、Cのような言語では条件演算子が必要です。これは、戻り値に評価されません。しかし、Rubyでは、すべてが式であり、すべてに戻り値があり、ステートメントはありません。
したがって、条件演算子はいつでも条件式に置き換えることができます。
foo = bar ? baz : qux
とまったく同じです
foo = if bar then baz else qux end
Cでは、これを書くことはできません、あなたは書く必要があります
if bar then foo = baz else foo = aux end
コードの重複につながります。そのため、Cでは条件演算子が必要です。Rubyでは不要です。
実際、Rubyはオブジェクト指向言語であるため、すべての条件文は不要です。代わりにポリモーフィズムを使用できます。