2010-12-09 96 views
1

可能重复:
What does !! mean in ruby?!! some_object做什么?

这是什么功能做什么?

def current_product? 
    !!current_product 
end 

这不是双重否定吗?

+1

重复[什么!意思是在红宝石?](http://stackoverflow.com/questions/524658/what-does-mean-in-ruby)。 – 2010-12-09 02:07:04

回答

5

!!基本上是布尔铸造。如果current_producttruthy!current_productfalse!!current_producttrue,反之亦然。即它将truthy的值转换为truefalsy的值为false

1

这是你会在每个对象都有一个真值的任何语言看到一个模式,但也有规范布尔值(无论它们被称为TrueFalse101""tnil , 随你)。 !!x本质上是“强制转换为布尔值”,因为!!xx具有相同的真值,但!!x将始终是规范的真/假值之一,而不是任何旧的真/假值。