Rails对象#空白? 与String#空? 混乱

Rails文档具有Object#blank?这些信息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? 方法适用于empty? 方法的字符串?


Rails在如何记录blank?有点棘手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
链接地址: http://www.djcxy.com/p/25797.html

上一篇: Rails Object#blank? vs. String#empty? confusion

下一篇: rails Object.blank? and whitespace