ifとunless、andとorでハマる
はまってしまったのでメモ。
return hoge unless 10 >= a or 10 >= b
みたいな処理をしていたら期待する動きをしなくなっていた。動いていたような気はするのだけれど。どの時点でこう書いたのかはもう覚えていないので、あるいは最初は違ったのかもしれない。
で、考えたら unless だから逆に考えないといけないわけで、a の方と b の方とどちらか一方でも該当すればなので、
if 10 >= a or 10 >= b
といった意味にしたいのであれば、
unless 10 >= a and 10 >= b
とするべきだったのだなと。
これまでは unless を使うことがほとんどなくて、最近になってなかなか便利なときもあるじゃない、などと思って使い始めたのもあってハマッてしまった。
追記:
つまりは、わかりにくい書き方はやめようね、ということですよね。
| 固定リンク


コメント