迭代Clojure向量并构建集合向量

时间:2016-03-29 08:51:22

标签: clojure datomic

我正在建立一个数据组交易。我有

(def codes 
   [:first-code :second-code :third-code])

我需要以这种格式生成集合的向量:

[
  {:db/id (d/tempid :db.part/region)
   :db/ident :first-code}
  {:db/id (d/tempid :db.part/region)
   :db/ident :second-code}
  {:db/id (d/tempid :db.part/region)
   :db/ident :third-code}
]

我无法弄清楚如何习惯性地这样做。

3 个答案:

答案 0 :(得分:3)

我认为你的意思是“地图矢量”。以下代码应该是好的:

(mapv
  (fn [code]
    {:db/id '(d/tempid :db.part/region)
     :db/ident code})
  codes)

答案 1 :(得分:2)

您可能想要使用for理解:

(let [id '(d/tempid :db.part/region)]
  (vec
    (for [code codes]
      {:db/id id
       :db/ident code})))

mapmapv,如果您特别需要矢量):

(let [id '(d/tempid :db.part/region)]
  (->> codes
       (mapv (fn [code]
               {:db/id id
                :db/ident code}))))

答案 2 :(得分:1)

我很确定有一种更简单的方法,但这将是一个良好的开端:

ps_configuration