or と || は違うのか!!
ということで、Rubyの話。
今日、バグ潰しをしてたんだけども、
思いがけずなバグがあった。
さて、問題です。
以下の実行結果は?
a = 2
b = a == 1 or a == 2
c = a == 1 || a == 2
p b.to_s + " " + c.to_s
答え:"false true"
本当なんだ。これ。
演算子の優先順位を見れば分かるんだけど
=(代入演算子)より優先度が低いのが原因。
↓括弧でくくってやれば"true true"になる。
a = 2
b = (a == 1 or a == 2)
c = a == 1 || a == 2
p b.to_s + " " + c.to_s
うーん。not,and,orを使うときは注意せねば・・・