为什么`x =!5`返回false?

Han*_*sco 5 ruby boolean operator-precedence

我一直在研究运算符优先级,并向我解释了x =! 5返回false.我似乎无法再向自己解释原因.我知道=!是不是运营商所以后来x5保持.这是否意味着Ruby不知道该怎么办?如果是这样ruby应该返回错误,因为x没有价值?Ruby是否停止在运算符上,然后赋值falsex

x =! 5 
=> false
Run Code Online (Sandbox Code Playgroud)

Aru*_*hit 36

这是因为x =! 5被解释为x = (!5)(!具有高于优先级=).在Ruby中每个对象是true除了nilfalse.5一个值,你使用运算符否定!.因此false,结果被分配给局部变量x.

! 称为逻辑NOT运算符 - 用于反转其操作数的逻辑状态.如果条件是true,则逻辑NOT运算符将生成false.