2009-09-07 5 views

Répondre

24

Affecte une valeur si elle n'est pas déjà affectée. Comme ceci:

a = nil 
a ||= 1 

a = 1 
a ||= 2 

Dans le premier exemple, un sera mis à 1. Dans le second, un sera toujours 1.

+1

Attend un peu comme le SQL 'opérateur coalesce' –

+0

Merci... Il est tout simplement en sorte que la valeur actuelle de la variable ne sera pas écrasé. –

+0

Cette i s gentil. Quelque chose que C# peut inspirer. :-) –

1

je ne peux que deviner, mais je suppose qu'il représente un opérateur logique combinée avec le réglage d'une variable (comme^=, + =, * = dans d'autres langues)

donc x ||= y est le même que x = x || y

edit: je devinais à droite, voir http://phrogz.net/ProgrammingRuby/language.html#table_18.4

x = x || y signifie: utiliser x si elle est définie, sinon y assigner. il peut être utilisé pour s'assurer que les variables sont au moins initialisées (à 0, à un tableau vide, etc.)

1

Si b est nul, attribuer un à lui.

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

Si b n'est pas nul, ne le changez pas.

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

Ceci est une 'cession abrégée' (voir Ruby Pocket Reference, page 10)

a = || b

(ce qui signifie une reçoit la valeur formée par logique ou de a, b

devient

a || b =

Presque tous les opérateurs ont une version abrégée (+ = * = & & = etc).