我刚刚开始学习Ruby,并且编写了一个程序来生成一些数字并将它们分配给变量@one,@two,@three等。然后用户可以通过输入它的名字来指定一个变量(例如一个)。然后我需要做一些像'@ [valueofinout] = asd'。我该如何做到这一点,有没有更好的方式,因为我想到的方式似乎很沮丧?我发现在Ruby中使用变量的值作为另一个变量名
x = "myvar"
myvar = "hi"
eval(x) -> "hi"
,但我不完全理解为什么需要第二行。在我来说,我会使用类似可以通过此方法来检索
@one = "21"
input = "one"
input = "@" + input
changeto = "22"
eval(input) -> changeto
哇,这实际上是PHP在语法清洁方面胜过Ruby的一个领域。 http://stackoverflow.com/a/4169891/2951835 – ahnbizcad 2015-05-09 07:06:18
Ruby很难做,因为它很丑,除非是元编程,否则很少需要设置实例的用户指定变量。动态地混淆全局变量是一个安全漏洞;如果你想要一组用户定义的变量,那么你可能需要一个散列。 – rjh 2016-11-16 17:30:21