注意: この記事は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? – 文字列や配列が空白かどうか
これらはうまく使っていかないと、思わぬバグの温床になるので、是非とも気をつけたい。
ウェブマスター。本ブログでITを中心にいろいろな情報や意見などを提供しています。主にスマートフォン向けアプリやウェブアプリの開発を携わっています。ご用の方はコメントかコンタクトフォームにて。