statement operator logical entre diferencia c# ruby null-coalescing-operator

operator - diferencia entre & y && en c#



Ruby equivalente a C#''s? operador (3)

El nombre del operador es el operador de unión nula . La publicación del blog original que vinculé y que cubría las diferencias en la unión nula entre idiomas se ha eliminado. Una comparación más reciente entre C # y Ruby null coalescente se puede encontrar here .

En resumen, puede utilizar || , como en:

a_or_b = (a || b)

Posible duplicado:
C # ?? operador en ruby?

¿Hay un operador de Ruby que haga lo mismo que C # ''s ? ¿operador?

El ?? el operador devuelve el operando de la izquierda si no es nulo, o si no devuelve el operando de la derecha.

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


Si no te importa fusionar falso, puedes usar el || operador:

a = b || c

Si falso puede ser un valor válido, puedes hacer:

a = b.nil? ? c : b

Donde b se comprueba en nulo, y si lo está, a se le asigna el valor de c, y si no, b.


Tenga en cuenta que Ruby tiene características específicas para la unión nula habitual a [] o 0 o 0.0 .

En lugar de

x = y || [] # or... x = y || 0

... puedes (porque NilClass implementa) solo hazlo ...

x = y.to_a # => [] or .. x = y.to_i # or .to_f, => 0

Esto hace que ciertos patrones de diseño comunes como:

(x || []).each do |y|

... lucir un poco mejor

x.to_a.each do |y|