Скажите, что у меня есть набор карт:
(def coll #{{:name "foo"} {:name "bar"}})
Я хочу функцию, которая добавит идентификатор (уникальное число прекрасно) к каждому элементу карты в наборе. т.е.
#{{:id 1 :name "foo"} {:id 2 :name "bar"}}
Следующее НЕ РАБОТАЕТ, но это - ход мыслей, который я в настоящее время имею.
(defn add-unique-id [coll]
(map assoc :id (iterate inc 0) coll))
Заранее спасибо...
Как насчет
(defn add-unique-id [coll]
(map #(assoc %1 :id %2) coll (range (count coll))))
или
(defn add-unique-id [coll]
(map #(assoc %1 :id %2) coll (iterate inc 0)))
Если вы действительно хотите быть уверены, что идентификаторы уникальны, используйте UUID s.
(defn add-id [coll] (map #(assoc % :id (str (java.util.UUID/randomUUID))) coll))