Ruby の&&と and の違い
Stewart Nguyen
2022年4月18日
ブール式またはフロー制御の場合、&&
と 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
を返します。