Clojure 使用标记向量和表单创建地图
我想用这段代码编写一个通用版本Clojure 使用标记向量和表单创建地图,clojure,zipmap,Clojure,Zipmap,我想用这段代码编写一个通用版本 (fn[item] {:tag1 ($x:text "./tag1" item) :tag2 ($x:text "./tag2" item)}) 我在考虑使用zipmap,因为我会使用标签向量,就像这样 [:tag1 :tag2], 但我不知道如何做一个广义的形式 ($x:text "./tag1" item) 对于向量中的任何给定项 有什么想法吗?这可以通过使用同一个集合两次来实现: (fn [item] (let [tags [:tag1
(fn[item]
{:tag1 ($x:text "./tag1" item)
:tag2 ($x:text "./tag2" item)})
我在考虑使用zipmap,因为我会使用标签向量,就像这样
[:tag1 :tag2],
但我不知道如何做一个广义的形式
($x:text "./tag1" item)
对于向量中的任何给定项
有什么想法吗?这可以通过使用同一个集合两次来实现:
(fn [item]
(let [tags [:tag1 :tag2]]
(zipmap tags
(map (fn [tag]
($x:text (str "./" (name tag)) item))
tags))))
但我认为在中使用实际上更清楚:
(fn [item]
(into {}
(map (fn [tag]
[tag ($x:text (str "./" (name tag)) item)])
[:tag1 :tag2])))
$x:tag1
和$x:tag2
在哪里定义,它们是做什么的?另外,您的示例中有一个太多的{
,或者可能有一个太少的}
,这将是函数的一部分,该函数将有一个向量作为输入参数,该向量由标记[:tag1:tag2]组成,是的,我有一个{对许多人来说……你是想让$x:tag1
作为函数名,还是$x
以:tag1
作为第一个参数,而空格丢失了?不,对不起,我的错,只是看到$x:带有:text,而不是:tag,我复制了错误的代码这是一个clj xpath函数