-
nil?
nil? 判断一个具体的对象是不是为空值的。在rails常用的就是activerecord的对象判断啦。例如a查出来不是空的判断
a = User.find(1) => a.nil? => true => a.present? => false
但是字符串,空数组 ,空hash查不出来。
=> "".nil? => false => [].nil? => false => {}.nil? => false
-
empty? 和 any?
empty? 和 any? 是通过length来判断的,一般用来判断数组 hash,或者对象集合。
例如:
=> [].empty? => true => [].any? => false => {}.empty? => true => {}.any? => false
不同的是 empty? 和 any?判断结果相反
=> "".empty? => true => "11".empty? => false => "".any? => 报错 => " ".any? =>报错
any不能判断字符串.
还是看any?的源码吧.
def any? if block_given? to_a.any? { |*block_args| yield(*block_args) } else !empty? end end
2 . present? 和 blank?
present? 和 blank?判断结果相反。看rails源码:
def blank? respond_to?(:empty?) ? empty? : !self end
def present? !blank? end
blank?的判断是结合nil? 和 empty? 用来判断 空值,空字符串,空数组,空hash.