这是红宝石中的任何条件类型吗? !!(),!(),!0,!! 0

时间:2015-05-11 08:47:39

标签: ruby irb

我只是在玩irb。我尝试了这样的语法,它返回true / false

有谁能形容我为什么以及如何发生这种行为?这是任何条件类型吗?

例如:

 > !!()
 => false 
 > !()
 => true 
 > !0
 => false 
 > !!0
 => true 

如果有人能用这种语法描述我,我感激不尽。

2 个答案:

答案 0 :(得分:8)

()
# => nil

括号是优先级'运算符',没有表达式的括号返回nil,如您所见。所以难怪:

!()
# => true
!!() # == !(!()) == !(true)
# => false
Ruby中的

0 truthy (事实上,只有nilfalse falsy ):

puts 'truthy' if 0
truthy
# => nil

所以与0相反的是false

!0
# => false

!!0false

相反
!!0 # == !(!0) == !(false)
# => true

答案 1 :(得分:3)

()计算为nil,其评估类似于false。添加!运营商(一次,两次或多次)只需将false更改为true,将true更改为false ...