标签: ruby hash
我有一个列表l = [:foo, :bar, :baz],并希望以编程方式将varible分配到哈希h ={}。
l = [:foo, :bar, :baz]
h ={}
哈希应该看起来像
{ foo: { bar: { baz: some_value } } }
注意:键是变量!
答案 0 :(得分:2)
您可以在反向列表中使用inject:
inject
l = [:foo, :bar, :baz] h = l.reverse.inject(:some_value) do |value, key| { key => value } end p h # {:foo=>{:bar=>{:baz=>:some_value}}}
reverse用于首先构建最内层哈希,并继续向外构建嵌套哈希。
reverse