什么!! some_object做什么?

时间:2010-12-09 02:00:01

标签: ruby-on-rails ruby

  

可能重复:
  What does !! mean in ruby?

这个功能在做什么?

def current_product?
   !!current_product
end

这不是双重否定吗?

3 个答案:

答案 0 :(得分:5)

!!基本上是对布尔值的强制转换。如果current_product truthy ,则!current_productfalse!!current_producttrue,反之亦然。即它会将 truthy 值转换为true,将 falsy 值转换为false

答案 1 :(得分:1)

它实际上是对布尔值的转换/转换。

类似的问题,但对于C ++:Doube Negation in C++ code

这里还有一篇相当不错的帖子:!! (The double bang / double not) in Ruby

答案 2 :(得分:1)

这是一种你会在任何语言中看到的模式,其中每个对象都有真值,但有规范布尔值(无论是True还是False101""tnil等等。 !!x本质上是“强制转换为布尔值”,因为!!x具有与x相同的真值,但!!x将始终是规范真/假之一值,而不是任何旧的真/假值。