Создайте карту из вектора тегов и формы
Я хочу написать обобщенную версию из этого кода
(fn[item]
{:tag1 ($x:text "./tag1" item)
:tag2 ($x:text "./tag2" item)})
Я думал об использовании zipmap, потому что я бы использовал вектор тегов, как это
[:tag1 :tag2],
но не знаю, как сделать обобщенную версию формы
($x:text "./tag1" item)
для любого данного элемента из вектора.
Есть идеи?
1 ответ
Решение
Это возможно с 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])))