В Clojure, как я мог создать, “добавляют идентификатор для отображения” функции?

Скажите, что у меня есть набор карт:

(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))

Заранее спасибо...

5
задан scrotty 14 February 2010 в 21:57
поделиться

2 ответа

Как насчет

(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)))
8
ответ дан 18 December 2019 в 08:27
поделиться

Если вы действительно хотите быть уверены, что идентификаторы уникальны, используйте UUID s.

(defn add-id [coll]
  (map #(assoc % :id (str (java.util.UUID/randomUUID))) coll))
11
ответ дан 18 December 2019 в 08:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: