首页 > 解决方案 > 如何更改作为散列值的变量的值(使用散列)?

问题描述

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

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

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

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

标签: rubyhashtable

解决方案


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

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

设置变量:

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

获取变量:

eval(foo[:key])

推荐阅读