如何更改作为散列值的变量的值(使用散列)?

How to change the value of a variable which is a value in a hash (using the hash)?

我有一个哈希表,用于将变量存储为值。我希望能够通过在散列中查找它们来更改这些变量,但我想不出一种不更改值本身的方法。

bar = "ruby"
foo = {key: bar}
foo
#=> { "key" => "ruby" }

foo[:key] = "rails"
foo
#=> { "key" => "rails" }

如何更改作为值存储在散列中的变量,而不是更改散列本身?

我想知道你为什么要这样做,但你可以存储变量的名称而不是变量本身:

bar = "ruby"
foo = {key: 'bar'}

设置一个变量:

eval("#{foo[:key]} = 'rails'")
p foo # {:key=>"bar"}
p bar # "rails"

获取一个变量:

eval(foo[:key])