假设我有一个任意深度的嵌套 Hash h
:
h = {
:foo => { :bar => 1 },
:baz => 10,
:quux => { :swozz => {:muux => 1000}, :grimel => 200 }
# ...
}
假设我有一个类C
定义为:
class C
attr_accessor :dict
end
如何替换所有嵌套值,h
以便它们现在是属性设置为该值C
的实例?dict
例如,在上面的例子中,我希望有类似的东西:
h = {
:foo => <C @dict={:bar => 1}>,
:baz => 10,
:quux => <C @dict={:swozz => <C @dict={:muux => 1000}>, :grimel => 200}>
# ...
}
其中<C @dict = ...>
代表一个C
实例@dict = ...
。(请注意,一旦你达到一个非嵌套的值,你就停止在C
实例中包装它。)