中野智文

中野智文(VOYAGE GROUP)のコンピュータなどのメモ

rubyの論理演算子の優先順位の(かなりの)落とし穴

2012-11-09 14:31:22 | ruby

結論

rubyでandとor(できればnotなんかも)は使ってはいけない。

理由

論理演算子を使った式を見て頂きたい。
irb> true || true && false
=> true
これは想定通り。ではandorを使った場合はどうか。
irb> true or true and false
=> false
ぐはー。結果が違う。
なぜなら、&&||には適切な優先順位が付けられているが、andorは同じ優先順位(すなわち出現順優先)である。rubyの公式ページの演算子式にはまるで、and&&が、あるいはor||が同等であるような書き方がしてあるが、これはひどい。

最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。