你能解释一下是什么!!做?

时间:2012-03-12 13:41:13

标签: ruby-on-rails ruby gem

  

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

我发现!!在Paypal gem中:https://github.com/tc/paypal_adaptive/blob/master/lib/paypal_adaptive/config.rb 像59

但我不明白它的作用。

我知道!意思是不,但!!没有意义。

这是屏幕:http://tinyurl.com/7acklhr

4 个答案:

答案 0 :(得分:4)

它强制任何值truefalse,具体取决于其“真实”性质。

这只是因为,正如您所指出的,!是布尔运算符。例如:

t = 1
puts !t  # => false
puts !!t # => true
f = nil
puts !f  # => true
puts !!f # => false

答案 1 :(得分:4)

!!用于在返回任何内容的内容上返回truefalse

在Ruby中,nilfalse以外的所有内容都被解释为true。但它不会返回true,它会返回值。 因此,如果您使用!,则会获得truefalse,但实际上是相反的值。 如果您使用!!,则会获得truefalse对应的值。

答案 2 :(得分:1)

用于确保其布尔类型。

Explanation more detailed

例如:

  
    

!!活性     =>真

         

active = false     =>假

         

!!活性     =>假

         

active = nil     =>零

         

!!活性     =>假

  

答案 3 :(得分:0)

这会强制结果为真或假。因为在ruby中,nil并不完全错误,这可能是有用的。例如:

def try x
  if x == 1
    return nil
  else
    return "non-nil"
  end
end

p "try1" if try(1) # here you get a string printed
p "try2" if !!try(1) # here you don't