ruby - 如何更改作为散列值的变量的值(使用散列)?
问题描述
我有一个哈希表,用于将变量存储为值。我希望能够通过在散列中查找它们来更改这些变量,但是我想不出一种方法可以在不更改值本身的情况下做到这一点。
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])
推荐阅读
- c# - HangFire 如何执行这些方法?
- android - 如何从内部存储中读取图像
- r - R语言,dnorm函数
- sql - 使用分组集时,PostgreSQL where 子句未下推
- jupyter - 如何更新 @jupyterlab/application 依赖项?
- batch-file - 将值组合到另一行的脚本
- tabulator - 无法使用ajax将数据加载到表中
- ruby - Rails 嵌套属性验证强制首先保存父级
- spring - spring 有什么方法可以在 spring 中动态创建对象而不使用工厂模式
- javascript - 量角器>Package.json 配置> 在我的 mac book 中找不到 .bin 文件夹