从列表

时间:2017-03-28 12:55:33

标签: ruby hash

我有一个列表l = [:foo, :bar, :baz],并希望以编程方式将varible分配到哈希h ={}

哈希应该看起来像

{ foo: { bar: { baz: some_value } } }

注意:键是变量!

问题:

  1. 我该怎么做?

1 个答案:

答案 0 :(得分:2)

您可以在反向列表中使用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用于首先构建最内层哈希,并继续向外构建嵌套哈希。