Rails Object#blank? vs. String#empty? 混乱
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?
时我缺少什么blank?
方法适用于empty?
String的方法?
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