这是ruby中的任何条件类型吗!!() , !() , !0, !!0

这是ruby中的任何条件类型吗!!() , !() , !0, !!0,ruby,irb,Ruby,Irb,我只是在和irb玩。我尝试了这样的语法,它返回我true/false 有人能告诉我为什么会发生这种行为,以及是如何发生的吗?这是任何条件类型吗 例如: > !!() => false > !() => true > !0 => false > !!0 => true 如果有人能给我描述一下这种语法,我将不胜感激 () # => nil 括号是优先级“运算符”,如您所见,不带表达式的括号返回nil。因此,难怪: !(

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

有人能告诉我为什么会发生这种行为,以及是如何发生的吗?这是任何条件类型吗

例如:

 > !!()
 => false 
 > !()
 => true 
 > !0
 => false 
 > !!0
 => true 
如果有人能给我描述一下这种语法,我将不胜感激

()
# => nil
括号是优先级“运算符”,如您所见,不带表达式的括号返回nil。因此,难怪:

!()
# => true
!!() # == !(!()) == !(true)
# => false
0
在Ruby中是真实的(事实上,只有
nil
false
是虚假的):

因此
0
的反面是
false

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

!0
# => false
!!0 # == !(!0) == !(false)
# => true
括号是优先级“运算符”,如您所见,不带表达式的括号返回nil。因此,难怪:

!()
# => true
!!() # == !(!()) == !(true)
# => false
0
在Ruby中是真实的(事实上,只有
nil
false
是虚假的):

因此
0
的反面是
false

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

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

()的计算结果为
nil
,其计算结果与
false
类似。添加!运算符(一次、两次或多次)只需将
false
更改为
true
并将
true
更改为
false

()的计算结果为
nil
,其计算结果与
false
类似。添加!运算符(一次、两次或多次)只需将
false
更改为
true
true
更改为
false

在ruby中,只有
false
nil
是错误的。@Aetherus你是对的,我认为在我的回答中值得注意。谢谢你的评论。@MarekLipka:谢谢你描述得很好的回答。注意这是一个方法,所以
!!0
相当于
0.send(:!@)。send(:!@)
。这可能更容易理解。@MarekLipka:谢谢你描述得很好的回答。在ruby中,只有
false
nil
是错误的。@Aetherus你是对的,我认为我的回答值得注意。谢谢你的评论。@MarekLipka:谢谢你描述得很好的回答。注意这是一个方法,所以
!!0
相当于
0.send(:!@)。send(:!@)
。这可能更容易理解。@MarekLipka:谢谢你描述得很好的回答。