jxp*_*777 7 ruby string ruby-on-rails
Rails文档有这些信息Object#blank?
如果对象为false,空或空白字符串,则该对象为空.例如,"","",nil,[]和{}为空.
但该方法的来源是这样的:
# File activesupport/lib/active_support/core_ext/object/blank.rb, line 12
def blank?
respond_to?(:empty?) ? empty? : !self
end
Run Code Online (Sandbox Code Playgroud)
现在,当我打开我方便的小命令行并输入ruby -e 'p " ".empty?'它时返回false.这意味着Rails应该说这是一个空白值,当它显然不是.但!我打开我rails console和我输入" ".empty?并像我早先的直接命令行一样得到假.但是,我键入"".blank?就像Rails承诺给我一样真实.
在理解Rails的blank?方法如何使用empty?String 方法时我缺少什么?
Mat*_*chu 10
Rails在如何记录其blank?方法方面有点棘手.即使Object#blank?声称也检测到空白字符串,它实现String#blank?为处理空白情况并Object#blank?捕获通用情况.(blank?也是为了节省时间而定义在其他几个类上.)
activesupport/lib/active_support/core_ext/object/blank.rb,第66行:
class String
def blank?
self !~ /\S/
end
end
Run Code Online (Sandbox Code Playgroud)