是否有一個Ruby運算符做同樣的事情爲C#的?運營商?
The ??如果操作數不爲空,則返回左側的 操作數,否則返回右側操作數。
從http://msdn.microsoft.com/en-us/library/ms173224.aspx
是否有一個Ruby運算符做同樣的事情爲C#的?運營商?
The ??如果操作數不爲空,則返回左側的 操作數,否則返回右側操作數。
從http://msdn.microsoft.com/en-us/library/ms173224.aspx
運營商的名稱是null-coalescing operator。我所鏈接的原始博客文章涵蓋了語言之間空合併的差異,已被取消。 C#和Ruby null合併的新比較可以在here找到。
總之,你可以使用||
,如:
a_or_b = (a || b)
如果你不介意的合併假的,你可以使用||運營商:
a = b || c
如果設置爲false可以是一個有效的值,你可以這樣做:
a = b.nil? ? c : b
其中B是檢查零,如果是,被分配c的值,如果不,b。
請注意,Ruby具有通常的空合併到[]
或0
或0.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|
鏈接現已停止。 – orourkedd 2014-02-13 13:22:53
@orourkedd謝謝,我用一個新的鏈接重新編寫了一下。 – 2014-02-13 13:55:12
這實際上是一個「falsy-coalescing操作符」。 – Kelvin 2015-07-23 21:56:25