2009-09-07 31 views

Respuesta

24

Asigna un valor si no está ya asignado. De esta manera:

a = nil 
a ||= 1 

a = 1 
a ||= 2 

En el primer ejemplo, una se establecerá en 1. En la segunda, un todavía habrá 1.

+1

se ve un poco como el SQL 'operador coalesce' –

+0

Gracias... Sólo se asegura de que el valor actual de la variable no se sobrescribe. –

+0

Este i es bueno Algo C# puede inspirar. :-) –

1

Sólo puedo imaginar, pero supongo que significa que un operador lógico combinado con el establecimiento de una variable (como^=, + =, * = en otros idiomas)

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

edición: supuse derecha, veo http://phrogz.net/ProgrammingRuby/language.html#table_18.4

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

1

Si b es nulo, asignar una a ella.

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

Si b no es nada, no lo cambie.

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

Esta es una 'asignación abreviada' (ver Rubí Pocket Reference, página 10)

a = a || b

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

convierte

a || = b

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