Ho appena iniziato a imparare Ruby e ho scritto un programma che genera alcuni numeri e li assegna alle variabili @ one, @two, @three ecc. L'utente può quindi specificare una variabile da modificare inserendo il suo nome (ad esempio uno). Ho quindi bisogno di fare qualcosa come '@ [valueofinout] = asd'. Come potrei fare questo, e c'è un modo migliore in quanto il modo in cui sto pensando sembra essere scoraggiato? Ho trovatoUso del valore di una variabile come un altro nome di variabili in Ruby
x = "myvar"
myvar = "hi"
eval(x) -> "hi"
ma non capisco completamente perché è necessaria la seconda riga. Nel mio caso dovrei usare qualcosa di simile
@one = "21"
input = "one"
input = "@" + input
changeto = "22"
eval(input) -> changeto
wow, questa è in realtà un'area in cui PHP sfiora il rubino in termini di pulizia della sintassi. http://stackoverflow.com/a/4169891/2951835 – ahnbizcad
Ruby rende difficile farlo perché è brutto, raramente è necessario impostare una variabile specificata dall'utente di un'istanza, a meno che non si stia eseguendo la metaprogrammazione. Il pasticcio dinamico con le variabili globali è un buco di sicurezza; se vuoi un insieme di variabili definite dall'utente allora probabilmente vuoi un hash. – rjh