Rails docs拥有Object#blank?
如果对象为false,空或空白字符串,则该对象为空。例如,“”,“”,nil,[]和{}为空白。
但该方法的来源是这样的:
# File activesupport/lib/active_support/core_ext/object/blank.rb, line 12
def blank?
respond_to?(:empty?) ? empty? : !self
end
现在,当我打开我方便的小命令行并输入ruby -e 'p " ".empty?'
时,它返回false。这意味着Rails应该说这是一个空白值,当它显然不是。但!我打开rails console
并输入" ".empty?
并像我之前的直线命令行一样得到假。但是,我键入“”.blank?而且我会像Rails承诺的那样得到真实。
在理解Rails的blank?
方法如何使用String的empty?
方法时,我缺少什么?
答案 0 :(得分:10)
Rails在如何记录其blank?
方法方面有点棘手。即使Object#blank?
声称还检测到空白字符串,它仍然使用String#blank?
来处理空格情况,并使用Object#blank?
来捕获通用情况。 (blank?
也定义在其他几个类上,以节省时间。)
activesupport/lib/active_support/core_ext/object/blank.rb, line 66:
class String
def blank?
self !~ /\S/
end
end