HOWTO · Ruby
Ruby の&&と and の違い
Ruby の and と&&の違いは?
ブール式またはフロー制御の場合、&&と and の両方を使用できます。
それらの違いは、優先順位です。演算子 and は = よりも優先順位が低く、&&は演算子 = よりも優先順位が高くなります。
これらの 2つのブール式について考えてみます。
puts var_1 = true && false
puts var_2 = true and false
出力:
false
true
どちらの式も false を返しますが、var_1 と var_2 には異なる値が割り当てられます。
var_1 = true && false は var_1 = true && false と同等であり、var_1 は false と同等です。
対照的に、var_2 = true and false は (var_2 = true) and false として評価されます。これは、var_2 に最終的に値 true が含まれることを意味します。
puts var_1
puts var_2
出力:
false
true
このため、このような三項演算子で and を使用しないでください。
s = true and 2.even? ? 'even' : 'odd'
puts s
出力:
true
even を出力すると予想されるかもしれませんが、代わりに true を返します。