【问题标题】:Ruby nested hash 'super' key accessRuby 嵌套哈希“超级”键访问
【发布时间】:2015-10-26 17:10:37
【问题描述】:

想象一下我们有这样的嵌套哈希:

{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

【问题讨论】:

  • 好的,所以实际上我设法解决了这个问题。我必须添加 hash[key] = Drill(value) 并返回 build_partial(key,value)。
  • 很高兴您找到了答案——如果您觉得自己有答案,请将其发布并标记为已解决(您将需要等待两天),以便其他人以后可以更快地找到它。
  • 好的,我会这样做的。谢谢:)

标签: ruby recursion hash nested


【解决方案1】:

好的,过了一会儿我发布了这个,我发现它是如何工作的。代码如下:

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

希望对有类似问题的人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-21
    • 2019-08-08
    相关资源
    最近更新 更多