Допустим, у меня есть
(defn test [ & {:keys [a b c]}]
(println a)
(println b)
(println c))
Я хочу вызвать test с картой {:a 1 :b 2 :c 3}
.
Это работает:
(apply test [:a 1 :b 2 :c 3])
Это не так:
(apply test {:a 1 :b 2 :c 3})
(apply test (seq {:a 1 :b 2 :c 3}))
РЕДАКТИРОВАТЬ Таким образом, вы, конечно, можете также определить функцию следующим образом:
(defn test [{:keys [a b c]}] ; No &
(println a)
(println b)
(println c))
И затем вы можете передатькарта к нему:
(test {:a 1 :b 2 :c 3})
1
2
3
При изучении clojure я пропустил это было возможно.Тем не менее, если вы когда-либо сталкивались с функцией, определенной мной или кем-то вроде меня, то знание того, как передать ей карту, все равно может оказаться полезным;)