Clojure расширяет ассоциативную артерию
Мне нужно реализовать пользовательскую ассоциацию, но она не работает с несколькими аргументами. Обрабатывает только первую пару. Кажется, что он вызывает ассоциацию напрямую, а не через базовую ассоциацию, а затем RT/ ассоциацию.
(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
Как это сделать для поддержки множественности?
1 ответ
Решение
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