迭代Clojure向量并建立集合向量
我正在建立一个datomic交易。我有迭代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/
(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))