在使用dissoc
时,我注意到它有一个一元版本,似乎没有做任何事情。我检查了来源,结果发现这只是恒等函数:
(defn dissoc
([map] map)
([map key]
(. clojure.lang.RT (dissoc map key)))
([map key & ks]
(let [ret (dissoc map key)]
(if ks
(recur ret (first ks) (next ks))
ret))))
然后我注意到 disj
也有一个具有相同定义的一元版本。
一元版本的目的是什么?我能看到的唯一潜在用途可能是当它们与 apply
一起使用时,但我不知道这有什么用处。为什么它们的 conj
和 assoc
对应项没有类似的一元版本?
最佳答案
考虑(应用 dissoc some-map items-to-remove)
。
如果一元形式不存在,items-to-remove
为空将是一个错误,因此在进行此调用之前需要始终检查其长度。
关于clojure - 使用 dissoc 的一元版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44210816/