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

迭代Clojure向量并建立集合向量,clojure,datomic,Clojure,Datomic,我正在建立一个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/

我正在建立一个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}
]
我想不出怎么用惯用的方式来做这件事

我想你指的是“地图向量”。以下代码应该是好的:

(mapv
  (fn [code]
    {:db/id '(d/tempid :db.part/region)
     :db/ident code})
  codes)
我想你的意思是“地图向量”。以下代码应该是好的:

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

您可能需要使用
进行理解:

(let [id '(d/tempid :db.part/region)]
  (vec
    (for [code codes]
      {:db/id id
       :db/ident code})))
或者
map
mapv
如果您特别需要向量):


您可能需要使用
进行理解:

(let [id '(d/tempid :db.part/region)]
  (vec
    (for [code codes]
      {:db/id id
       :db/ident code})))
或者
map
mapv
如果您特别需要向量):


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

(vec 
  (map #(into {} {:db/id '(d/tempid :db.part/region) :db/ident %}) codes))

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

(vec 
  (map #(into {} {:db/id '(d/tempid :db.part/region) :db/ident %}) codes))