我只是在玩irb。我尝试了这样的语法,它返回true
/ false
有谁能形容我为什么以及如何发生这种行为?这是任何条件类型吗?
例如:
> !!()
=> false
> !()
=> true
> !0
=> false
> !!0
=> true
如果有人能用这种语法描述我,我感激不尽。
答案 0 :(得分:8)
()
# => nil
括号是优先级'运算符',没有表达式的括号返回nil
,如您所见。所以难怪:
!()
# => true
!!() # == !(!()) == !(true)
# => false
Ruby中的 0
truthy (事实上,只有nil
和false
falsy ):
puts 'truthy' if 0
truthy
# => nil
所以与0
相反的是false
:
!0
# => false
和!!0
与false
:
!!0 # == !(!0) == !(false)
# => true
答案 1 :(得分:3)
()计算为nil
,其评估类似于false
。添加!运营商(一次,两次或多次)只需将false
更改为true
,将true
更改为false
...