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

时间:2009-09-07 12:06:56

标签: ruby operators

  

可能重复:
  What does ||= (or equals) mean in Ruby?

在Google中搜索这个很难,因为它是符号,而不是文本。

||=代表什么?

它是如何运作的?

5 个答案:

答案 0 :(得分:24)

如果尚未分配,则指定一个值。像这样:

a = nil
a ||= 1

a = 1
a ||= 2

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

答案 1 :(得分:7)

问题Common Ruby Idioms

  

相当于

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

答案 2 :(得分:1)

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

所以x ||= yx = x || y

相同

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

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

答案 3 :(得分:1)

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

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

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

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

答案 4 :(得分:0)

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

a = a || b

(意思是指定由逻辑或a,b

形成的值

变为

a || = b

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