7

我有一棵结构未知的树。首先,我想找到一个包含文本字符串“Something”的节点。然后,在确定字符串在树中的位置之后,我想更新一个相对于字符串 location的不同节点。数据是具有多个列表分支的深度嵌套映射。

用拉链可以吗?

我研究过这种编辑树的方法:http ://www.exampler.com/blog/2010/09/01/editing-trees-in-clojure-with-clojurezip/ 。问题是,我事先并不知道字符串的位置。

4

1 回答 1

7

是的!这正是专为这种任务拉链而设计的。

  • 反复调用 zip/next 直到找到要查找的节点。
  • 然后打电话zip/path找出你相对于根的位置。
  • 然后调用zip/up,zip/downzip/left进入要修改的节点。
  • 更新节点
  • 调用zip/root以获取包含这些更改的新地图。
于 2014-02-01T00:42:33.993 回答