`!! empty?`是什么意思?

eee*_*ean 3 ruby boolean negation

ActiveSupport Object使用实例方法扩展blank?:

class Object
  def blank?
    respond_to?(:empty?) ? !!empty? : !self
  end
end
Run Code Online (Sandbox Code Playgroud)

可以!!empty?写成empty?呢?这是一个风格选择,以便它作为返回布尔值的方法轻松读取?或者还有其他什么?

Nat*_*and 6

这样做的原因是!!强制从空到布尔的响应.可以在不同的对象上以不同方式定义Empty,因此rails中的某个人可能已经定义.empty?为不返回布尔值.由于.blank?需要返回一个布尔值,!!因此需要确保返回一个布尔值.