il ||=
l'operatore controlla prima se il valore car
è già impostato. Se car
restituisce zero, verrà assegnato il primo valore sul lato destro che non restituisce nil
o false
.
Quindi, dato il vostro esempio dall'alto, se si assegna un valore a macchina come
car = "BMW"
e si esegue si codice frammento, il valore di auto sarà ancora "BMW";
Se method_1 rendimenti (per esempio) la stringa "Value from Method 1"
e auto è nil
o false
, allora macchina questa stringa verranno assegnati ad auto
car = nil
car ||= (method_1 || method_2)
car # => "Value from Method 1"
Se method_1 restituisce anche nil
/false
, controllerà per la valore in method_2, e così via, finché non ottiene una sorta di valore vero
La differenza con il tuo secondo snippet di codice è che, in caso di ||=
, la variabile car
verrà valutata per prima e impostata se si tratta di diventa nullo o falso.
Se si utilizza solo =
, non verrà eseguita alcuna valutazione e la vettura verrà impostata sul primo valore a destra che non restituisce nulla o falso.
- AGGIORNAMENTO -
Per rispondere alla tua domanda di aggiornamento, il valore sul lato destro saranno valutati da sinistra a destra, in modo che il primo che non restituisce verranno assegnati 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 –
Duplicato: [Cosa significa '|| =' in Ruby?] (Http://StackOverflow.Com/q/995593 /), [cosa significa '|| =' significa in Ruby?] (Http://StackOverflow.Com/q/3800957/), [cosa è '|| =' in ruby?] (Http: // StackOverflow.Com/q/3945711/), [Double Pipe Symbols in Ruby Variable Assignment?] (Http://StackOverflow.Com/q/4500375/), [Cosa significa l''"| | = =" operando in ruby] (http://StackOverflow.Com/q/5124930/), [cosa significa '|| =' nel linguaggio Ruby?] (http://StackOverflow.Com/q/5230162/), [Is the operatore ruby '|| =' intelligente?] (http://StackOverflow.Com/q/2989862/), ... –
... [Cosa significa '|| =' significa?] (http://StackOverflow.Com/q/ 7556902 /), [cosa fa "' || = '" fare in Ruby 1.9.2?] (Http://StackOverflow.Com/q/7714803/), e probabilmente anche molti altri. Vedi anche [La lista definitiva di '|| =' (OR uguale) discussioni e pagine] (http://Ruby-Forum.Com/topic/151660/). –