0

今日は小さなテストを行いました。

> false && 1 || 2
> 2
> true && 1 || 2
> 1

では、すでに2項演算子を使用できるのであれば、なぜ3項が必要だったのでしょうか。

> false ? 1 : 2
> 2
> true ? 1 : 2
> 1

これは単なるエイリアスではなく、解析を複雑にするためです。

4

3 に答える 3

3

あなたの質問の特定のケースに対処するには…</p>

1異なる値、つまりfalseと評価された値があった場合はどうなりますか?

そして一般的に:

いいえ。三項演算子はいつでもif/else構文に置き換えることができます。しかし、それはそれほど便利ではありません。

于 2013-02-21T13:39:04.580 に答える
1

言語に三項演算子は必要ありません。

三項演算子は、よく知られている言語構造です。IMOの人々は一般的に、スクリプトっぽい(見た目が良い)言語でそれを期待しているので、そうです。私はそれを持っていない大きな理由はわかりません。

于 2013-02-21T13:37:06.327 に答える
1

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はオブジェクト指向言語であるため、すべての条件文は不要です。代わりにポリモーフィズムを使用できます。

于 2013-02-21T13:53:53.107 に答える