nil?
オブジェクトが「存在しない」という意味。空白の存在。
オブジェクトが存在しなければ、true
を返します。
[1] pry(main)> 1.nil?
=> false
[2] pry(main)> nil.nil?
=> true
[3] pry(main)> 0.nil?
=> false
[4] pry(main)> ''.nil?
=> false
[5] pry(main)> [].nil?
=> false
empty?
empty?はnilを判定できません。
そのオブジェクトが存在していることが前提で、中身が「空」か、文字列が「” “」のときにtrue
を返します。レシーバーがnil
だと、UndefinedMethodになってしまいます。
[1] pry(main)> [].empty?
=> true
[2] pry(main)> ''.empty?
=> true
[3] pry(main)> nil.empty? # nilを判定できない
NoMethodError: undefined method `empty?' for nil:NilClass
from (pry):7:in `<main>'
[4] pry(main)> nil.respond
NoMethodError: undefined method `respond' for nil:NilClass
from (pry):8:in `<main>'
[5] pry(main)> nil.respond_to? :empry? # nilにempty?メソッドがあるのか確認
=> false
blank?
blank? はnil?
とempty?
を合わせた判定ができます。中身が「空」なのか、またはオブジェクト自体が存在しないのか?の判定に使えます。
中身がnilのときと、「空」の時にtrue
を返します。
[1] pry(main)> [].blank?
=> true
[2] pry(main)> ''.blank?
=> true
[3] pry(main)> nil.blank? # nilを判定できる
=> true
[4] pry(main)> nil.respond_to? :blank? # nilにblank?メソッドがあるのか確認
=> true
present?
present?
は、!blank?
と同じ意味になります。nil
ではなく「空
」でもない、すなわちオブジェクトが存在する場合にtrue
を返します。
[1] pry(main)> [].present?
=> false
[2] pry(main)> ''.present?
=> false
[3] pry(main)> nil.present?
=> false
[4] pry(main)> nil.respond_to? :present? # nilにpresent?メソッドがあるのか確認
=> true
[5] pry(main)> 1.present?
=> true
any?
要素の中に1つでも真があればtrue
を返します。
すべての要素が偽である場合に false を返します。
また、ブロックを伴う場合は、各要素に対してブロックを評価し、すべての結果が偽である場合に false を返します。 ブロックが真を返した時点で、ただちに true を返します。
[1] pry(main)> [1, 2, 3].any? # 整数値はtrueなのでtrueが返る
=> true
[2] pry(main)> [0, nil, nil].any? # 整数値0が含まれるのでtrueが返る
=> true
[3] pry(main)> [nil, nil, false].any? # すべてがnil、falseのみなのでfalseが返る
=> false
ブロック引数を渡す場合
[1] pry(main)> [1, 2, 3].any? { |n| n.odd? } # 奇数1, 3が含まれるためtrue
=> true
[2] pry(main)> [2, 4, 6].any? { |n| n.odd? } # 全て偶数であるためfalse
=> false
all?
全ての要素が真である場合にtrueを返します。
要素の中に1つでも偽がある場合はfalseを返します。
[1] pry(main)> [1, 2, 3].all?
=> true
[2] pry(main)> [1, 2, nil].all?
=> false
参考記事
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9bmlsJTNGJTIwZW1wdHklM0YlMjBibGFuayUzRiUyMHByZXNlbnQlM0YlMjAlRTMlODElQUUlRTQlQkQlQkYlRTMlODElODQlRTUlODglODYlRTMlODElOTEmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtY2xpcD1lbGxpcHNpcyZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTYwZmQ3OGMyNWVkOTQxMmE2ZDliNmYwNmZmYzYwMGFk&mark-x=142&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwc29tZXdoYXRnb29kJTQwZ2l0aHViJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz0zMjdjY2MzZjkxMjU5MTkyOGE2M2NmODRhZjUwNzQ3Mg&blend-x=142&blend-y=491&blend-mode=normal&s=944c4754e33bf4e2c656d19b9458b84e)
nil? empty? blank? present? の使い分け - Qiita
まず、nil?とempty?はrubyのメソッドで、blank?とpresent?はrailsで拡張されたメソッド(つまりrub…
コメント