sesiones rails gema ruby variables dynamic-variables

ruby - rails - gema devise



Usar el valor de una variable como otro nombre de variables en Ruby (2)

Estoy empezando a aprender Ruby y escribí un programa que genera algunos números y los asigna a las variables @one, @two, @three, etc. El usuario puede especificar una variable para cambiar ingresando su nombre (ej. uno). Entonces necesito hacer algo como ''@ [valueofinout] = asd''. ¿Cómo lo haría? ¿Hay alguna manera mejor de desanimar la manera en que estoy pensando? He encontrado

x = "myvar" myvar = "hi" eval(x) -> "hi"

pero no entiendo completamente por qué es necesaria la segunda línea. En mi caso, ¿usaría algo así como

@one = "21" input = "one" input = "@" + input changeto = "22" eval(input) -> changeto


Las variables de instancia se pueden recuperar a través de este método:

input = instance_variable_get("@one")

Después de esto, en su caso tendrá una input igual a "21".


Usar instance_variable_set ( rubydoc )

instance_variable_set("@" + varname, value)

Sin embargo, en la mayoría de los casos, debe separar las variables de Ruby normales de las variables con las que su usuario está interactuando. ¿Qué hay de la creación de un hash de variables de usuario, por ejemplo,

@uservars = { ''one'' => 1, ''two'' => 2 } two = @uservars[''two''] # Look up ''two'' variable varname = "myvar" @uservars[varname] = 5 # Set a variable by name value = @uservars[varname] # Get a variable by name