这是什么功能做什么?
def current_product?
!!current_product
end
这不是双重否定吗?
这是什么功能做什么?
def current_product?
!!current_product
end
这不是双重否定吗?
!!
基本上是布尔铸造。如果current_product
是truthy,!current_product
是false
和!!current_product
是true
,反之亦然。即它将truthy的值转换为true
和falsy的值为false
。
这实际上是一个强制转换/布尔转换。
类似的问题,但对于C++:Doube Negation in C++ code
也是一个相当不错的职位约在这里:!! (The double bang/double not) in Ruby
这是你会在每个对象都有一个真值的任何语言看到一个模式,但也有规范布尔值(无论它们被称为True
和False
,1
和0
,1
和""
,t
和nil
, 随你)。 !!x
本质上是“强制转换为布尔值”,因为!!x
与x
具有相同的真值,但!!x
将始终是规范的真/假值之一,而不是任何旧的真/假值。
重复[什么!意思是在红宝石?](http://stackoverflow.com/questions/524658/what-does-mean-in-ruby)。 – 2010-12-09 02:07:04