Ruby の落とし穴: 実は and と or の優先順位が一緒
こんなん今の今まで知らんかったわ。
irb> true || true && false #=> true irb> true or true and false #=> false irb> true || false && false #=> true irb> true or false and false #=> false
まじですかー! 何やねん、これ。
マニュアル見ると、and と or の優先順位が一緒だった。つまり '&&' > '||' なのに 'and' == 'or' ですよ。
これに基づくと、上のはこう解釈されていることになる。
irb> true || (true && false) #=> true irb> (true or true) and false #=> false irb> true || (false && false) #=> true irb> (true or false) and false #=> false
なるほどねー。
しかし、なんでこんな仕様なんだろ。どっちでもいいっちゃいいんだけど、理由あるんかな。