Ruby 嵌套哈希 'super' 密钥访问
Ruby nested hash 'super' key access
假设我们有这样的嵌套哈希:
{Class=>{"attr"=>{NestedClass=>{"nested_attr"=>9}}}}
我使用的递归方法使我达到了这一点:
{Class=>{"attr"=>{NestedClass=>{"nested_attr"=>9}}}}
^^^^^^^^^^^
其中 NestedClass
是键,{"nested_attr"=>9}}}}
是值。
现在,我想修改以将散列 {NestedClass=>{"nested_attr"=>9}}}}
更改为某个对象,但它需要像
{Class=>{"attr"=>some_new_object}}
如何才能达到这样的效果?
这是我使用的示例方法:
def drill(hash)
hash.each do |key, value|
drill(value) if value.instance_of?(Hash)
build_partial(key, value) if class?(key)
end
end
好的,几分钟后我发布了这个,我发现它是如何工作的。这是代码:
def drill(hash)
hash.each do |key, value|
hash[key] = drill(value) if value.instance_of?(Hash)
return build_partial(key, value) if class?(key)
end
end
希望对遇到类似问题的人有所帮助。
假设我们有这样的嵌套哈希:
{Class=>{"attr"=>{NestedClass=>{"nested_attr"=>9}}}}
我使用的递归方法使我达到了这一点:
{Class=>{"attr"=>{NestedClass=>{"nested_attr"=>9}}}}
^^^^^^^^^^^
其中 NestedClass
是键,{"nested_attr"=>9}}}}
是值。
现在,我想修改以将散列 {NestedClass=>{"nested_attr"=>9}}}}
更改为某个对象,但它需要像
{Class=>{"attr"=>some_new_object}}
如何才能达到这样的效果?
这是我使用的示例方法:
def drill(hash)
hash.each do |key, value|
drill(value) if value.instance_of?(Hash)
build_partial(key, value) if class?(key)
end
end
好的,几分钟后我发布了这个,我发现它是如何工作的。这是代码:
def drill(hash)
hash.each do |key, value|
hash[key] = drill(value) if value.instance_of?(Hash)
return build_partial(key, value) if class?(key)
end
end
希望对遇到类似问题的人有所帮助。