我应该如何转换一系列嵌套的散列(嵌套到任意深度),以一系列嵌套OpenStructs的? 我加载在一个大YAML文件,我不喜欢accessing['everything']['like']['this']
我已经找到了几个部分解决方案使用谷歌,但我认为这将是一个不错的问题在这里。
下面是我从找到的解决方案之一http://andreapavoni.com/blog/2013/4/create-recursive-openstruct-from-a-ruby-hash :
# deep_struct.rb
require 'ostruct'
class DeepStruct < OpenStruct
def initialize(hash=nil)
@table = {}
@hash_table = {}
if hash
hash.each do |k,v|
@table[k.to_sym] = (v.is_a?(Hash) ? self.class.new(v) : v)
@hash_table[k.to_sym] = v
new_ostruct_member(k)
end
end
end
def to_h
@hash_table
end
end
该解决方案的问题是,它没有考虑阵列考虑。