Ruby 中的条件赋值
Stewart Nguyen
2022年5月18日
a ||= b
是一个条件赋值运算符。相当于 a || a = b
。
如果 a
为假,即:nil
或 false
,则评估 b
并将结果分配给 a
。
如果 a
为真,即除 nil
和 false
外,b
将不被评估,a
将保持不变。
例如:
a = nil
a ||= 10
a
=> 10
a = 1
a ||= 10
a
=> 1
问题是:如果 a += b
等于 a = a + b
那么 a ||= b
应该是 a || a = b
。
这是一个完全错误的假设。如果没有事先声明 a
,a || a = b
将导致未定义的变量错误。
a || a = 10
输出:
NameError: undefined local variable or method `a'