我想用这段代码编写一个通用版本
(fn[item]
{:tag1 ($x:text "./tag1" item)
:tag2 ($x:text "./tag2" item)})
我正在考虑使用zipmap,因为我使用了一个标签矢量,就像这样
[:tag1 :tag2],
但不知道如何制作表格的通用版本
($x:text "./tag1" item)
来自矢量的任何给定项目。
有什么想法吗?
答案 0 :(得分:2)
这可以通过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])))