“|| =”操作数在ruby中代表什么?

时间:2011-02-26 03:52:44

标签: ruby

  

可能重复:
  What does ||= mean in Ruby?

我测试过这样:

>> a||=3
=> 3
>> a
=> 3
>> a||=b
=> 3
>> b
NameError: undefined local variable or method `b' for main:Object
    from (irb):11

1 个答案:

答案 0 :(得分:5)

它是逻辑OR运算的简写。它相当于:

a || a = b

注意:上述代码示例已更正,以反映展开a ||= b时的真实(如果不直观)行为。感谢那些为我指出这一点的人。 Here is the source

如果a评估为true,它将保持原样,否则b将被分配给a。在ruby nil中求值为false,因此您可以看到这对延迟加载和默认值赋值有用。