运算符|| =在Ruby中代表什么?

可能重复:
什么|| =(或等于)在Ruby中意味着什么?

在谷歌搜索这个很难,因为它是一个符号,而不是文本。

什么是||=代表什么?

它是如何工作的?

如果尚未分配,则分配值。 像这样:

 a = nil a ||= 1 a = 1 a ||= 2 

在第一个示例中,a将设置为1.在第二个示例中,a仍将为1。

从普通Ruby成语问题:

相当于

  if a == nil || a == false a = b end 

如果b为nil,则为其指定a。

 a = :foo b ||= a # b == :foo 

如果b不为零,请不要更改它。

 a = :foo b = :bar b ||= a # b == :bar 

我只能猜测,但我认为它代表逻辑运算符与设置变量相结合(如^ =,+ =,* =在其他语言中)

所以x ||= yx = x || y相同 x = x || y

编辑:我猜错了,请参阅http://phrogz.net/ProgrammingRuby/language.html#table_18.4

x = x || y x = x || y表示:如果设置则使用x,否则指定y。 它可用于确保变量至少初始化(为0,为空数组等)

这是一个“缩写分配”(参见Ruby Pocket Reference,第10页)

a = a || b

(意思是a被赋予由逻辑或a,b形成的值

a || = b

几乎所有运营商都有缩写版本(+ = * = && = etc)。