如何在Ruby中使用变量作为变量名?

Rad*_*dek 5 ruby variables

如何使下面的代码工作,以便puts显示1

video = []
name = "video"

name[0] = 1

puts name[0] #gives me 1
puts video[0] #gives me nil
Run Code Online (Sandbox Code Playgroud)

sep*_*p2k 7

您可以使用eval使其工作:

eval "#{name}[0] = 1"
Run Code Online (Sandbox Code Playgroud)

我强烈建议不要这样做.在大多数情况下,你认为你需要做类似的事情,你应该使用hashmap.喜欢:

context = { "video" => [] }
name = "video"
context[name][0] = 1
Run Code Online (Sandbox Code Playgroud)

  • @Radek:拥有3000年腮腺炎等破碎系统的经验; 这是一种典型的代码味道,它会使您的代码难以理解和维护. (3认同)
  • @Radek:首先,如果你评估用户输入,这是一个主要的安全漏洞.对于另一个哈希映射,它更适合从变量名称映射到值.另一方面,使用eval的代码可能很难调试. (3认同)