2011-01-09 114 views

回答

25

運營商的名稱是null-coalescing operator。我所鏈接的原始博客文章涵蓋了語言之間空合併的差異,已被取消。 C#和Ruby null合併的新比較可以在here找到。

總之,你可以使用||,如:

a_or_b = (a || b) 
+0

鏈接現已停止。 – orourkedd 2014-02-13 13:22:53

+0

@orourkedd謝謝,我用一個新的鏈接重新編寫了一下。 – 2014-02-13 13:55:12

+2

這實際上是一個「falsy-coalescing操作符」。 – Kelvin 2015-07-23 21:56:25

12

如果你不介意的合併假的,你可以使用||運營商:

a = b || c 

如果設置爲false可以是一個有效的值,你可以這樣做:

a = b.nil? ? c : b 

其中B是檢查零,如果是,被分配c的值,如果不,b。

3

請注意,Ruby具有通常的空合併到[]00.0的特定功能。

而不是

x = y || [] # or... 
x = y || 0 

...你可以(因爲NilClass實現他們)只是做...

x = y.to_a # => [] or .. 
x = y.to_i # or .to_f, => 0 

這使得某些常見的設計模式,如:

(x || []).each do |y| 

...看起來好一點:

x.to_a.each do |y|