2009-09-07 33 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

幾乎所有運營商擁有的簡化版本(+ = * = & & =等)。