我一直在研究运算符优先级,并向我解释x =! 5
返回false
。我似乎无法再向自己解释原因。我知道=!
不是运营商,因此x
和5
仍然存在。这是否意味着Ruby不知道该怎么办?如果是这样,ruby应该返回错误,因为x
没有价值? Ruby是否停留在运算符上,然后将值false
分配给x
?
x =! 5
=> false
答案 0 :(得分:36)
这是因为x =! 5
被解释为x = (!5)
(!
has higer precedence than =
)。在Ruby中,除了true
和nil
之外,每个对象都是false
。 5
有 truthy 值,您使用运算符!
否定该值。因此,false
作为结果分配给局部变量x
。
!
Called Logical NOT
Operator - 用于反转其操作数的逻辑状态。如果条件为true
,则逻辑NOT
运算符将生成false
。
答案 1 :(得分:0)
Ruby中没有=!
运算符这样的东西。 !=
检查not equal
。
基本上,当解析器查看代码并找到=
时,它会查找以=
开头的其他运算符,例如==
。如果找不到匹配项(例如=!
),则将表达式视为赋值,并将右侧分配给左侧。在这种情况下,=
的右侧是! 5
,等于false。