2009-09-07 34 views

回答

24

它分配一个值(如果尚未分配的话)。像这样:

a = nil 
a ||= 1 

a = 1 
a ||= 2 

在第一个例子中,将被设置为1.在第二个,一个仍然将是1

+1

看起来有点像SQL'coalesce'操作 – 2009-09-07 12:13:52

+0

感谢。它只是确保该变量的当前值不会被覆盖。 – 2009-09-08 02:53:13

+0

这是我很好。 C#可以启发你。 :-) – 2012-10-03 17:53:47

1

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

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

编辑:我猜对了,看http://phrogz.net/ProgrammingRuby/language.html#table_18.4

x = x || y意思是:如果设置了x,否则分配y。它可用于确保变量至少已初始化(至0,空阵列等)

1

如果b为零,分配给它。

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

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

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

这是一个 '缩写分配'(参见红宝石袖珍参考,第10页)

A = A || b

(意味着被分配通过逻辑或的形成的值,b

变得

一个|| = B

几乎所有运营商拥有的简化版本(+ = * = & & =等)。