复制.blank?在标准的Ruby中

Cal*_*ods 6 ruby

Rails有一个.blank?如果Object为空,将返回true的方法?还是没有?可以在此处找到实际的代码.当我尝试1.9.2通过执行以下操作来复制它:

class Object

  def blank?
    respond_to?(:empty?) ? empty? : !self
  end

end
Run Code Online (Sandbox Code Playgroud)

叫"".blank?返回true但调用"".blank?根据rails文档,返回false,对于.blank,空格字符串应该为真?在我查找我最初编写的代码之前:

class Object

  def blank?
    !!self.empty? || !!self.nil?
  end

end
Run Code Online (Sandbox Code Playgroud)

并得到了相同的结果.我错过了什么?

Vas*_*ich 13

你忘掉了这一点 - https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/object/blank.rb#L95

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
Run Code Online (Sandbox Code Playgroud)