2011-06-01 3 views

Respuesta

24

probablemente lo haría así:

@results = @results.to_s + "run" 

Esto funciona porque NilClass define un método #to_s que devuelve una cadena de longitud cero, y debido a las variables de instancia se inicializan automáticamente a cero.

+1

muy bueno, simple – Radek

+3

Una variación de esto sería '@results =" # {@ results} ejecutar "' –

12

Tienes razón:

(@results ||= "") << "run" 

para aclarar, es a || ba ? a : b, lo que significa que intenta usar el valor a si a es "verdadero" (no falso o nulo) pero usa b si a es "falsey". El uso de ||= por lo tanto, solo actualiza una variable si la variable es nula. Luego, << agrega la cadena.

+0

¿podría explicarlo? ;-) – Radek

+0

¿es correcto? 'Usar || = por lo tanto, solo actualiza la variable @results si la variable no es nula. De lo contrario, actualiza una cadena vacía "". La actualización/apéndice se hace a través de << .' – Radek

+0

@Radek: Permítanme aclarar más: porque 'a _ = b' para algún operador' _' se convierte en 'a = a _ b', obtenemos (@results = @results || "") << "ejecutar". – Tom

Cuestiones relacionadas