Ruby相当于C#的?操作者

时间:2011-01-09 03:48:03

标签: c# ruby null-coalescing-operator

  

可能重复:
  C# ?? operator in Ruby?

是否有一个Ruby运算符与C#的 ?? 运算符做同样的事情?

  

?? 运算符返回左侧   操作数,如果它不是null,否则它   返回正确的操作数。

来自http://msdn.microsoft.com/en-us/library/ms173224.aspx

3 个答案:

答案 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具有通常的空合并到[]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|