请在 2024 年 Clojure 状态调查! 中分享您的想法。

欢迎!请查看 关于 页面以获取更多关于这是如何工作的信息。

0
Clojure

例如

Clojure 1.3.0
user=> (require '(link: clojure.zip :as z))
nil
user=> (-> (z/seq-zip (list 1)) z/down z/remove)
NullPointerException clojure.core/with-meta (core.clj:211)

可能 seq-zip 的 make-node 函数应该是

(fn (link: 节点 子节点) (with-meta (or 子节点 ()) (meta 节点)))

4 个答案

0

评论者:glchapman

zipper 的文档也应该更新,以表明 children 参数可以为 nil。

0

评论者:chbrown

4 年后,我也遇到了这个问题。

有解决方案吗?也就是说,是否有方法从单分支中删除元素?

0

评论者:alexmiller

很高兴能看到补丁(尽管它还需要回填一些测试)。

一个解决方案可能如下

(-> (z/seq-zip (list 1)) (z/edit #(drop 1 %)) z/node)

或者,你可以使用另一个 zipper 库,如 hara.zip,它没有 remove,但与 delete-right 一起工作

(->(z/seq-zip(列表1)z/down z/delete-right z/up z/node))

0
答对了: by
参考:https://clojure.atlassian.net/browse/CLJ-941(由glchapman报告)
...