2011年7月13日水曜日

空チェック(empty? と blank?)について

変数等の中身をチェックする際に、
Rubyでは、プログラムの処理によっては、empty? と nil? の両方をチェックすることがあります。
例えば、nil?の可能性があるものに対して、empty?チェックだけを行うと下記のエラーが出ますよね。

> a = nil
> a.empty?
NoMethodError: undefined method `empty?' for nil:NilClass


Railsでは、両方をまとめてチェックしてくれる便利な blank? があります。
ただし、Rails以外で利用するには、モジュールを require する必要があります。

irbで実行するとこんな感じです。

> require 'rubygems'
> require 'active_support'
>
> a = nil
> b = ""
> c = []
>
> a.blank?
=> true
> b.blank?
=> true
> c.blank?
=> true

ちなみにrequireしなかった場合はこんなエラーになります。
> a.blank?
NoMethodError: undefined method `blank?' for nil:NilClass
> b.blank?
NoMethodError: undefined method `blank?' for "":String

なお、Rails2とRails3ではRequireするモジュールが異なるようなので、ご注意ください。
上記はRails2の例です。
Rails3はまだ入れていないので確認できていません…。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。