可能的重复:
C# ?? Ruby的操作员?

有没有与C#的Ruby操作员一起做相同的事情 ?? 操作员?

?? 操作员如果不是零操作数,则返回左手操作数,否则将返回右操作数。

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

有帮助吗?

解决方案

操作员的名称是 零煤的操作员. 。我链接到的原始博客文章涵盖了语言之间的无效合并的差异。可以找到C#和Ruby Null合并之间的更新比较 这里.

简而言之,您可以使用 ||, ,如:

a_or_b = (a || b)

其他提示

如果您不介意合并为错误,则可以使用||操作员:

a = b || c

如果false可以是有效的值,您可以做:

a = b.nil? ? c : b

在检查b的情况下,为nil进行了检查,如果是,则分配了a的值,如果不是,则为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|
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top