Rails有一个.blank?如果Object为空,将返回true的方法?还是没有?可以找到here的实际代码。当我尝试使用1.9.2来复制它时:
class Object
def blank?
respond_to?(:empty?) ? empty? : !self
end
end
拨打“”.blank?返回true但调用“”.blank?根据{{3}}时,返回false。对于.blank,空白字符串应该eval为true?在我查找我最初编写的代码之前:
class Object
def blank?
!!self.empty? || !!self.nil?
end
end
并得到了相同的结果。我错过了什么?
答案 0 :(得分:13)
class String
# A string is blank if it's empty or contains whitespaces only:
#
# "".blank? # => true
# " ".blank? # => true
# " something here ".blank? # => false
#
def blank?
self !~ /\S/
end
end
答案 1 :(得分:2)
String
类会覆盖Rails实现中Object
的{{1}}实现:
blank?
答案 2 :(得分:1)
如果字符串只有空格
,则不会被归类为empty?
>> " ".empty?
=> false
因此,您可能还希望创建
class String
def blank?
strip.empty?
end
end
但仔细考虑一下 - 像这样的猴子修补是危险的,特别是如果其他模块将使用你的代码。