Clojure:将每个元素包装在集合中的惯用方法

时间:2016-11-01 15:19:23

标签: collections clojure

如果我有一个特定形状的集合:

["Alpha", "Beta", "Gamma"]  ;; vector of strings

我希望通过包装每个元素来转换它:

[{:name "Alpha"}, {:name "Beta"}, {:name "Gamma"}]

是否有更好的表达方式,而不是这个相当笨拙的map

(map #(identity {:name %}) coll)

2 个答案:

答案 0 :(得分:4)

如果您不喜欢使用map的{​​{1}},则可以使用(fn [v] {:name v})

for

答案 1 :(得分:2)

您可以简单地使用fn

(map (fn [v] {:name v}) coll)

如果您想使用匿名函数语法,可以使用array-map构建地图:

(map #(array-map :name %) coll)