Ruby 中否定和不等式的区别?

Difference between negation and inequality in Ruby?

Ruby编程语言中的if !variable == 10 {...}if variable != 10 {...}有什么区别?当然,这可以应用于所有其他语言。在第一种情况下我们只是否定条件,而在第二种情况下测试变量是否实际上不等于 10?

if variable != 10 等同于 unless variable == 10!variable 正在否定变量,所以首先它被评估为一个表达式,然后被否定。

示例

variable = 5
variable != 10 # => true
!variable # => false (5 is evaluated to true, then negated)
!variable = 10 # => warning: found = in conditional, should be ==

在很大程度上,包括 Ruby 在内的所有编程语言都遵循 boolean algebra rules 表示相同条件的表达方式有很多种。

x != y
!(x == y)
!!(x != y)

这也在其他领域发挥作用,例如:

!x && !y
!(x || y)

正如其他人指出的那样,在使用 == 比较器 而不是 = assignment 运算符时要非常小心。