mi solución es comocómo agregar una cadena a una variable que existe o no?
if (not (defined?(@results).nil?))
@results += "run"
else
@results = "run"
end
pero creo que hay algo más simple ...
mi solución es comocómo agregar una cadena a una variable que existe o no?
if (not (defined?(@results).nil?))
@results += "run"
else
@results = "run"
end
pero creo que hay algo más simple ...
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.
Tienes razón:
(@results ||= "") << "run"
para aclarar, es a || b
a ? 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.
¿podría explicarlo? ;-) – Radek
¿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
@Radek: Permítanme aclarar más: porque 'a _ = b' para algún operador' _' se convierte en 'a = a _ b', obtenemos (@results = @results || "") << "ejecutar". – Tom
muy bueno, simple – Radek
Una variación de esto sería '@results =" # {@ results} ejecutar "' –