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 (list 1)) z/down z/delete-right z/up z/node)

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