はじめに
使い分けがフワッとしていたので改めてまとめます。
メソッドごとの違い
メソッド | 判定対象 | 出力 |
---|---|---|
nil? | nil | Boolean |
empty? | ""(空文字) | Boolean |
blank? | nil + ""(空文字) + [] + {} | Boolean |
present? | nil + ""(空文字)以外か | Boolean |
nil?
hoge = nil
puts hoge.nil?
# true
hoge = ""
puts hoge.nil?
# false
empty?
hoge = ""
puts hoge.empty?
# true
hoge = "hoge"
puts hoge.empty?
# false
hoge = nil
puts hoge.empty?
#undefined method `empty?' for nil:NilClass (NoMethodError)
レシーバがnilの可能性がある場合は例外が吐かれる可能性がある。
blank?
hoge = ""
puts hoge.blank?
# true
hoge = "hoge"
puts hoge.blank?
# false
hoge = nil
puts hoge.blank?
# true
present?
hoge = ""
puts hoge.present?
# false
hoge = "hoge"
puts hoge.present?
# true
hoge = nil
puts hoge.present?
# false
!blank
と等価の関係に当たる。