Deep set

hash = { }
def deep_set(hash, value, keys)
keys[0...-1].inject(hash) do |acc, h|
v = acc.public_send(:[], h)
v ? v : acc[h] = {}
end.public_send(:[]=, keys.last, value)
end

deep_set(hash, 42, [:a, :b, :c])
deep_set(hash, 43, [:a, :b, :d])
deep_set(hash, 44, [:a, :b, :e])
puts hash

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容