1

我需要实现自定义关联,但它不适用于多个参数。它只处理第一对。似乎它是直接调用 assoc,而不是通过 core assoc 然后 RT/assoc。

(def my-assoc (reify
                clojure.lang.Associative
                  (assoc [_ k v]
                    (println "assoc!!" k v))))

(assoc my-assoc :a 2 :b 3) ;; prints only :a 2

应该如何支持多元?

4

1 回答 1

3

println返回零。所以返回原始值:

(def my-assoc (reify
                clojure.lang.Associative
                (assoc [m k v]
                  (println "assoc!!" k v)
                  m)))

(assoc my-assoc :a 2 :b 3) ;; prints both
于 2017-06-17T11:22:11.243 回答