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

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

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

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

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

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

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

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

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

ウェブマスター。本ブログでITを中心にいろいろな情報や意見などを提供しています。ご用の方はコメントかコンタクトフォームにて。

スポンサーリンク

フォローする