可能重复:
What does ||= (or equals) mean in Ruby?运算符|| =在Ruby中代表什么?
很难搜索这个在谷歌,因为它是一个符号,而不是文字。
||=
代表什么?
它是如何工作的?
可能重复:
What does ||= (or equals) mean in Ruby?运算符|| =在Ruby中代表什么?
很难搜索这个在谷歌,因为它是一个符号,而不是文字。
||=
代表什么?
它是如何工作的?
它分配一个值(如果尚未分配的话)。像这样:
a = nil
a ||= 1
a = 1
a ||= 2
在第一个例子中,将被设置为1.在第二个,一个仍然将是1
我只能猜测,但我相信它代表一个逻辑运算符与设置变量组合(如^ =,+ =,* =在其他语言)
所以x ||= y
相同x = x || y
编辑:我猜对了,看http://phrogz.net/ProgrammingRuby/language.html#table_18.4
x = x || y
意思是:如果设置了x,否则分配y。它可用于确保变量至少已初始化(至0,空阵列等)
如果b为零,分配给它。
a = :foo
b ||= a
# b == :foo
如果b不是零,请不要更改它。
a = :foo
b = :bar
b ||= a
# b == :bar
这是一个 '缩写分配'(参见红宝石袖珍参考,第10页)
A = A || b
(意味着被分配通过逻辑或的形成的值,b
变得
一个|| = B
几乎所有运营商拥有的简化版本(+ = * = & & =等)。
看起来有点像SQL'coalesce'操作 – 2009-09-07 12:13:52
感谢。它只是确保该变量的当前值不会被覆盖。 – 2009-09-08 02:53:13
这是我很好。 C#可以启发你。 :-) – 2012-10-03 17:53:47