Ruby の&&と and の違い

Stewart Nguyen 2022年4月18日
Ruby の&&と and の違い

ブール式またはフロー制御の場合、&&and の両方を使用できます。

それらの違いは、優先順位です。演算子 and= よりも優先順位が低く、&&は演算子 = よりも優先順位が高くなります。

これらの 2つのブール式について考えてみます。

puts var_1 = true && false
puts var_2 = true and false

出力:

false
true

どちらの式も false を返しますが、var_1var_2 には異なる値が割り当てられます。

var_1 = true && falsevar_1 = true && false と同等であり、var_1false と同等です。

対照的に、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 を返します。