質問

なぜだろうrubyい and, or 以下が優先されよ &&, || をオペレーター?あな理由がありますか?

役に立ちましたか?

解決

私の推測では、直接行からのPerlです。事業者の orand 追加後は、Perl5のための特定の状況下が優先されます。

例えば、Perl、ここにいる || た低優先できるように、私たちと一緒に働きま

try to perform big long hairy complicated action     || die ;

やっていることをご確認ください || ませんでしたかを鵜呑みに行動する。Perl5の導入 or, では、新しいバージョンの || 低い優先順位は、この目的です。

では、例Rubyでの利用 or がない ||:

value = possibly_false or raise "foo"

ご利用いただいていたお客様 ||, この構文エラーになります。

他のヒント

違いは優先順位です。 || && = よりも優先順位が高くなりますが、 and またはが低い。だからできること:

a = nil || 0

やらなければならないこと:

a = (nil or 0)

同じ効果を得るため。行う場合:

a = nil or 0

式の結果は0のままですが、値はnilになります。

これらの優先順位は非常に低いため、&& || の場合のように、オペランドを括弧で囲む必要はありません。

演算子の優先順位を制御できることは、特に読みやすさを懸念している場合に便利です。条件文の余分な括弧は、実際のロジックをあいまいにすることがあります。

しかし、率直に言って、Rubyがブール演算子の優先レベルを持っている理由は、主にMatzがRubyを書く前にPerlプログラマーであり、そこからコア構文と演算子の多くを借りていたという事実に起因すると思います言語。

アイデアは、特に代入演算子の下にそれらを取得することであると考えているので、括弧付きではなく代入ありで論理テストを書くことができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top