Допустим, у меня есть произвольно глубокий вложенный хэш 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
экземпляров.)