一つの値に対して、nilか空白かを確認する方法について悩んでます。
1.ふつう
if value.nil? || value.empty?
hogehoge
end
2.モジュールとかで定義
if nil_or_empty?(value)
hogehoge
end
3.巷でよく使われてるらしい
if value.to_s.empty?
hogehoge
end
4.組み込みクラスをいじる
class NilClass
def nil_or_empty?
true
end
end
class String
def nil_or_empty?
self.empty?
end
end
if value.nil_or_empty?
hogehoge
end
1.
まぁ普通なんだけど、変数名を二回も打つのが面倒くさい。
2.
value.nil?,value.empty?って呼べるのに両方確かめたいときに、他人を介して尋ねるのがなんだかね。
3.
nil.to_sの結果が""になるのを利用したやり方
過去のruby-devとかを見てると、nil.to_sは"nil"を返すように変更しようとする議論があったみたい。
とりあえず、現状のままでいこうと落ち着いたみたいだけど。
4.
組み込みクラスはあんましいじるのはよくないらしいのでねぇ。
#Railsはいじってるけどね。
他人に利用してもらうようなライブラリを作成している訳でもないから、
4.にしようかと考えたけど、
条件判断に、特定の文字列をも含める必要が出た場合とかに結局きれいにならない気がしてきた。
if value.nil_or_empty? || value == "all"
hogehoge
end
うーん、やっぱり普通に1.かなぁ。
あぁ、まだまだ先は長い。。。
追記:2007/10/16 23:10
Rails(activesupport)では、nilかemptyかを調べてくれるblank?っていう便利なメソッドが定義されているんですね。
http://dev.rubyonrails.org/browser/trunk/activesupport/lib/active_support/core_ext/blank.rb
ただソースを見ると、stripをしてるので
" ".blank?
#=>true
になるのをわかった上で使わないといけないですね。
投稿日時 : 2007年10月16日 21:43