operadores operador operaciones comparacion ruby operators

operaciones - ¿Qué significa el operador ||=en Ruby?



operadores de comparacion ruby (5)

Posible duplicado:
¿Qué significa || = (o igual) en Ruby?

Es difícil buscar esto en Google porque es un símbolo, no texto.

¿Qué quiere decir ||= ?

Y, ¿cómo funciona?


Asigna un valor si aún no está asignado. Me gusta esto:

a = nil a ||= 1 a = 1 a ||= 2

En el primer ejemplo, a se establecerá en 1. En el segundo, a todavía será 1.


De la pregunta Common Ruby Idioms :

es equivalente a

if a == nil || a == false a = b end


Esta es una ''tarea abreviada'' (vea Ruby Pocket Reference, página 10)

a = a || segundo

(lo que significa que a se le asigna el valor formado por lógico o de a, b

se convierte en

a || = b

Casi todos los operadores tienen una versión abreviada (+ = * = && = etc).


Si b es nulo, asignale a.

a = :foo b ||= a # b == :foo

Si b no es nulo, no lo cambies.

a = :foo b = :bar b ||= a # b == :bar


Solo puedo adivinar, pero supongo que significa un operador lógico combinado con la configuración de una variable (como ^ =, + =, * = en otros idiomas)

entonces x ||= y es lo mismo que x = x || y x = x || y

edición: he acertado, vea http://phrogz.net/ProgrammingRuby/language.html#table_18.4

x = x || y x = x || y significa: usa x si está configurado, de lo contrario asigna y. se puede usar para asegurar que las variables estén al menos inicializadas (a 0, a una matriz vacía, etc.)