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.
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|