答案 0 :(得分:29)
运营商的名称是null-coalescing operator。我链接到的原始博客文章涵盖了语言之间空合并的差异已被删除。可以找到C#和Ruby null合并之间的较新比较here。
简而言之,您可以使用||
,如:
a_or_b = (a || b)
答案 1 :(得分:14)
如果你不介意合并假,你可以使用||操作者:
a = b || c
如果false可以是有效值,则可以执行以下操作:
a = b.nil? ? c : b
其中b检查为nil,如果是,则a指定c的值,如果不是,则b。
答案 2 :(得分:4)
请注意,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|