T or F
まず、rubyだと
「偽」になるのは nil と false だけ。
(PHPとかJSだと "" , " ", 0 , "0", null とかどれが「偽」扱いになるのかすぐ忘れる。)
判定メソッドのメモ(抜粋コピペ)。
nil?
nilとfalseを判別したい場合などに、==演算子を使わずに書ける。
empty?
「入れ物」は存在するのが前提でString や Array の中身が空の場合にtrue. 入れ物がない場合は NoMethodError
blank? (ActiveSupport)
nil? or empty? ※半角スペースだけの文字列はtrueを返す
present? (ActiveSupport)
!blank?
presence (ActiveSupport)
present? が true の場合にレシーバ自身を返す
# こういうのが… name = params[:name].present? ? params[:name] : '名無し' # presenceを使うとこうなるよ!! name = params[:name].presence || '名無し'
これ便利!
try (ActiveSupport)
レシーバが nil でなければ指定したメソッドを呼び出す
# こういうのが… user ? user.name : '名無し' # tryメソッドを使うとこうなるよ!! user.try(:name) || '名無し'
これも便利!!
tryは Object#sendメソッドの alias で、NilClass#try が定義されているらしいです。
class NilClass def try(*args) nil end end
これだけなのにすごい。 ActiveSupportとかActiveRecordとかのコードみると勉強になりますね。 スッキリかけるし、エラーハンドリングの時とか特に意識しようと思います。
http://qiita.com/somewhatgood@github/items/b74107480ee3821784e6
この方々の良くまとめられていてとても参考になりましたm(__)m