我测试过这样:
>> a||=3
=> 3
>> a
=> 3
>> a||=b
=> 3
>> b
NameError: undefined local variable or method `b' for main:Object
from (irb):11
答案 0 :(得分:5)
它是逻辑OR运算的简写。它相当于:
a || a = b
注意:上述代码示例已更正,以反映展开a ||= b
时的真实(如果不直观)行为。感谢那些为我指出这一点的人。 Here is the source
如果a
评估为true,它将保持原样,否则b
将被分配给a
。在ruby nil
中求值为false
,因此您可以看到这对延迟加载和默认值赋值有用。