la ||=
el operador verifica primero, si su valor car
ya está configurado. Si car
devuelve cero, asignará el primer valor en el lado derecho que no devuelve nil
o false
.
Por lo tanto, dada su ejemplo de arriba, si asigna un valor al coche como
car = "BMW"
y ejecutar su código-fragmento, el valor del coche va a seguir siendo "BMW";
Si se vuelve a method_1 (por ejemplo) la cadena "Value from Method 1"
y el coche es nil
o false
, a continuación coche esta cadena serán asignados a coche
car = nil
car ||= (method_1 || method_2)
car # => "Value from Method 1"
Si method_1 también devuelve nil
/false
, se comprobará la valor en method_2, y así sucesivamente, hasta que obtenga algún tipo de valor verdadero
La diferencia con su segundo fragmento de código es que en el caso de ||=
se evaluará primero la variable car
y se establecerá si es se vuelve nulo o falso.
Si usa =
solamente, no se realizará ninguna evaluación y el automóvil se establecerá en el primer valor a la derecha que no devuelva nulo o falso.
- ACTUALIZACIÓN -
Para responder a su pregunta actualización, se evaluará el valor en el lado derecho de izquierda a derecha, por lo que el primero de ellos que no devuelve se le asignará nil
o false
.
car = nil
# method_1 => "nil"
# method_2 => "false"
# method_3 => "value method 3"
# method_4 => "I won't be called"
car ||= (method_1 || method_2 || method_3 || method_4)
# => "value method 3"
http://stackoverflow.com/questions/995593/what-does-mean-in-ruby –
Duplicado: [¿Qué significa '|| =' en Ruby?] (Http://StackOverflow.Com/q/995593 /), [¿Qué significa '|| =' en Ruby?] (Http://StackOverflow.Com/q/3800957/), [¿qué es '|| =' en ruby?] (Http: // StackOverflow.Com/q/3945711/), [¿Símbolos de tubería doble en Ruby Variable Assignment?] (Http://StackOverflow.Com/q/4500375/), [¿Qué significa el "' || = '" operando en ruby] (http://StackOverflow.Com/q/5124930/), [¿qué significa '|| =' en el lenguaje de Ruby?] (http://StackOverflow.Com/q/5230162/), [Es el ruby operator '|| =' intelligent?] (http://StackOverflow.Com/q/2989862/), ... –
... [¿Qué significa '|| =' significa?] (http://StackOverflow.Com/q/ 7556902 /), [¿Qué significa "' || = '" en Ruby 1.9.2?] (Http://StackOverflow.Com/q/7714803/), y probablemente muchos otros también. Ver también [La lista definitiva de hilos y páginas '|| =' (OR Equal)] (http://Ruby-Forum.Com/topic/151660/). –