通过点路径从Ruby哈希表中深度删除。

5

在Ruby中,给定这样一个带有嵌套哈希的哈希表(深度可能不同):

hash = {"status_message"=>
         { "destination_does_not_exist"=>
           {"message_header"    => "Zielordner existiert nicht",
            "message_body"      => "Der Zielordner für das Backup existiert nicht mehr.",
            "corrective_action" => "Erstellen Sie den Zielordner."
           }
         }
       }

如何使用简单的“点”表示法删除键及其所有子值?例如:
path = "status_message.destination_does_not_exist.message_header"
hash.delete!(path)

可能是 https://dev59.com/12w15IYBdhLWcg3wv-RM 的重复问题。 - Peter Alfvin
1个回答

7
path = path.split '.'
leaf = path.pop

path.inject(hash) {|h, el| h[el]}.delete leaf

好的,谢谢指出。我刚开始学习 Ruby,所以没有把它认作一个简单的树。 - user987266
Yossi,也许有一些关于使用Ruby操作树的信息吗?如何使用哈希表来表示它们等等。 - user987266
从来没有看到过相关资源,抱歉。 - Yossi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接