在使用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
同行没有类似的一元版本?