可能重复:
C# ?? Ruby 中的运算符?
是否有与 C# 执行相同操作的 Ruby 运算符?操作员?
?? _ 运算符如果不为空则返回左操作数,否则返回右操作数。
运算符的名称是null-coalescing operator。我链接到的原始博客文章涵盖了语言之间空值合并的差异已被删除。可以在此处找到 C# 和 Ruby 空值合并之间的更新比较。
简而言之,您可以使用||
,如:
a_or_b = (a || b)
如果你不介意合并 false,你可以使用 || 操作员:
a = b || c
如果 false 可以是有效值,您可以执行以下操作:
a = b.nil? ? c : b
其中 b 被检查为 nil,如果是,则为 a 分配 c 的值,如果不是,则为 b。
请注意,Ruby 具有将通常的 null 合并到[]
or0
或的特定功能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|