Ruby 中的条件赋值

Stewart Nguyen 2022年5月18日
Ruby 中的条件赋值

a ||= b 是一个条件赋值运算符。相当于 a || a = b

如果 a 为假,即:nilfalse,则评估 b 并将结果分配给 a

如果 a 为真,即除 nilfalse 外,b 将不被评估,a 将保持不变。

例如:

a = nil
a ||= 10
a
=> 10
a = 1
a ||= 10
a
=> 1

问题是:如果 a += b 等于 a = a + b 那么 a ||= b 应该是 a || a = b

这是一个完全错误的假设。如果没有事先声明 aa || a = b 将导致未定义的变量错误。

a || a = 10

输出:

NameError: undefined local variable or method `a'

相关文章 - Ruby Boolean