如何使用Specter从Clojure树中删除一个键?

9

我一直在使用Clojure Specter库(https://github.com/nathanmarz/specter)进行学习。 我遇到的问题是如何使用transform或setval方法删除一个键。 我可以将其设置为nil,但是如何完全删除一个键呢?

3个回答

6
(setval :a NONE {:a 10 :b 20})
=> {:b 20}

4

这似乎是有效的:

(transform [ALL] #(when (not= (key %) :a) %) {:a 1 :b 2})
=> {:b 2}

1
在Clojure 1.9.0和Specter 1.1.0下,这会给我一个ClassCastException clojure.lang.PersistentVector cannot be cast to java.util.Map$Entry clojure.core/key (core.clj:1559)的错误。 - Ben Kovitz
同样的问题,如果你尝试上述方法仍然会得到“ClassCastException”。 - Andrea Richiardi

-2
根据这个Reddit帖子,你不能使用Specter的dissoc(你可以过滤),但是你可以使用instar
编辑:现在已经可以了。

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