オブジェクトがnilの場合 例外が発生する。
結構デバッグに時間がかかる。
参考サイト)nil または emptyを判定する
したいことは、このsourceで完成
if params[:nyuin].blank? || params[:nyuin][key3].blank?
inlistflag = 'F'
else
inlistflag = 'T'
end
あと、入れ子の判定 params[:vital][:a],params[:vital][:b],とかが一括して判定したい場合がある
以下参照します
ほかのパターンとしては、array, hash の入れ子のアクセスがあると思います。
例えば、入れ子の hash として扱う h があるとき、h[:a] が nil である場合を
考慮して
if h[:a] && h[:a][:b]
と書かないといけないのが面倒です。
これは
h = Hash.new {|hash, key| hash[key] = {} }
このように h を作っておけば key に :a がないとき h[:a] すると自動的に
h[:a] = {} になりますから
if h[:a][:b]
と書けます。
ただし key の存在を検査するときは h.key?(:a) などとする必要があります。
結構デバッグに時間がかかる。
参考サイト)nil または emptyを判定する
したいことは、このsourceで完成
if params[:nyuin].blank? || params[:nyuin][key3].blank?
inlistflag = 'F'
else
inlistflag = 'T'
end
あと、入れ子の判定 params[:vital][:a],params[:vital][:b],とかが一括して判定したい場合がある
以下参照します
ほかのパターンとしては、array, hash の入れ子のアクセスがあると思います。
例えば、入れ子の hash として扱う h があるとき、h[:a] が nil である場合を
考慮して
if h[:a] && h[:a][:b]
と書かないといけないのが面倒です。
これは
h = Hash.new {|hash, key| hash[key] = {} }
このように h を作っておけば key に :a がないとき h[:a] すると自動的に
h[:a] = {} になりますから
if h[:a][:b]
と書けます。
ただし key の存在を検査するときは h.key?(:a) などとする必要があります。