Ruby的等价于C#的??运营商
问题描述:
是否有一个Ruby运算符做同样的事情为C#的?运营商?
The ??如果操作数不为空,则返回左侧的 操作数,否则返回右侧操作数。
答
运营商的名称是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