我有一个数组: arr = [:a, :b, :c]
我想要一个哈希,其中上述每个值都是一个空值为空的哈希作为其值: hsh = {a: {}, b: {}, c: {}}
什么是最简洁的方式(并且有性能权衡)?
这是我目前的解决方案:
arr.inject({}) do |hash, entry|
hash[entry] = {}
hash
end
Run Code Online (Sandbox Code Playgroud)
您可以使用each_with_object而不是inject避免返回值:
arr.each_with_object({}) { |k, h| h[k] = {} }
#=> {:a=>{}, :b=>{}, :c=>{}}
Run Code Online (Sandbox Code Playgroud)
在修订版中隐藏了一个较短的方法,但Cary不推荐它;-)