Rubyのtrue/falseチェックが意外と面倒

注意: この記事は1年以上前に掲載されたものです。情報が古い場合がありますのでお気を付け下さい。

Rubyでのtrue/falseチェックは意外に面倒で、扱い方によっては、思わぬ落とし穴になることがある。ここではRubyのtrue/falseチェックについて、軽く書いてみたい。

Rubyでは、trueとfalseの判定は以下のようになっている。

  • nilまたはfalseであればfalse(偽)として扱われる。
  • nilおよびfalse以外のものは全てtrue(真)として扱われる。

したがって、0がfalse(偽)として扱われるC言語とは違い、0であってもtrue(真)として扱われるので、気をつけなければならない。

例えば、irbで以下のコマンドを打った場合は、trueが返ってくる。

var = 0
var ? true : false

一方で、trueとfalseを判定するメソッドは多数あり、例えば以下が挙げられる。
?

  • nil? – その変数がnilかどうか
  • blank? – その変数がnilか空白かどうか?(Integer型には使えない)
  • present? – その変数が存在するか(nilでも空白でもないか)
  • empty? – 文字列や配列が空白かどうか

これらはうまく使っていかないと、思わぬバグの温床になるので、是非とも気をつけたい。

タイトルとURLをコピーしました