使用标签向量和表单创建地图

Create a map out of vector of tags and a form

我想用这段代码写一个通用版本

(fn[item] 
 {:tag1 ($x:text "./tag1" item) 
  :tag2 ($x:text "./tag2" item)})

我正在考虑使用 zipmap,因为我会使用标签向量,就像这样

[:tag1 :tag2],

但不知道如何制作表格的通用版本

($x:text "./tag1" item)

对于向量中的任何给定项目。

有什么想法吗?

这可以通过 zipmap 实现,方法是两次使用同一个集合:

(fn [item]
  (let [tags [:tag1 :tag2]]
    (zipmap tags
            (map (fn [tag]
                   ($x:text (str "./" (name tag)) item))
                 tags))))

但我认为使用 into:

实际上更清楚
(fn [item]
  (into {}
        (map (fn [tag]
               [tag ($x:text (str "./" (name tag)) item)])
             [:tag1 :tag2])))