任意に深くネストされた 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}>
# ...
}
whereは のインスタンスを<C @dict = ...>
表します。(ネストされていない値に到達するとすぐに、インスタンスでのラップを停止することに注意してください。)C
@dict = ...
C