2016-03-29 13 views
0

私はデータトランザクションを構築しています。Clojureベクトルを反復し、セットのベクトルを構築する

[ 
    {: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} 
] 

私は慣用的にこれを行う方法を見つけ出すことはできません:私は、この形式でセットのベクトルを生成する必要が

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

を持っています。

答えて

2

あなたはfor理解を使用したい場合があり

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

「地図のベクトル」を意味すると思います。次のコードは、良いことがあります:(あなたは、具体的ベクトルをしたい場合mapv

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

またはmap

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

私はかなり簡単な方法があることは確かですが、これは良いスタートになるでしょう:

(vec 
    (map #(into {} {:db/id '(d/tempid :db.part/region) :db/ident %}) codes)) 
関連する問題