如何创建返回Hiccup结构的Clojure函数?
想象一下,我想编写一个Clojure函数,返回一个相当于如何创建返回Hiccup结构的Clojure函数?,clojure,hiccup,Clojure,Hiccup,想象一下,我想编写一个Clojure函数,返回一个相当于Hello的Hiccup结构 我该怎么做? 我试过了 (defn render-location-details [cur-location] (let [] (list :h3 "Hello") ) ) 及 但在这两种情况下,都得到了错误消息(:h3“Location X”)不是有效的元素名称。 更新1:我正在从此函数调用上述函数: (defn generate-location-deta
Hello
的Hiccup结构
我该怎么做?
我试过了
(defn render-location-details
[cur-location]
(let []
(list :h3 "Hello")
)
)
及
但在这两种情况下,都得到了错误消息(:h3“Location X”)不是有效的元素名称。
更新1:我正在从此函数调用上述函数:
(defn generate-location-details-report
[all-locations]
(let
[
hiccup-title [:h2 "Locations"]
hiccup-body (into []
(map
render-location-details
all-locations)
)
]
(str
(html hiccup-title)
hiccup-body
)
)
)
有一个集合
所有位置
。对于它的每个元素,我想用HTML(带有h3
)头(hiccup body
)创建一个节,在标题(hiccup title
)前面加上前缀,并将所有内容转换为HTML。hiccupHTML
函数将获取一系列标记,并将它们作为字符串呈现
(let [locations ["one" "two" "three"]
title-html [[:h2 "Locations"]]
location-html (map (fn [location] [:h3 location]) locations)]
(html (concat title-html location-html)))
"<h2>Locations</h2><h3>one</h3><h3>two</h3><h3>three</h3>"
(让[位置[“一”“二”“三”]
标题html[:h2“位置”]]
位置html(地图(fn[位置][:h3位置])位置)
(html(目录标题html位置html)))
“两树之间的位置”
第一个渲染位置详细信息
不起作用,因为列表不是向量,因此Hiccup不会将其渲染为标记
第二个
渲染位置详细信息
正常,并执行您想要的操作。空的(let[]
绑定是不必要的。但是,将Hiccup主体(放入[]中)会混淆Hiccup
-它试图将位置标记的向量理解为标记,因为就Hiccup而言,向量=标记。我们是否缺少一些代码?您如何称呼Hiccup?除了不需要let块之外,您的第二个示例看起来应该很好。我猜您最终会得到类似于[:h3“location X”的结果]…]
这就给了你一个错误。所以问题是你调用渲染位置详细信息的地方是哪里?@cfrick@pete23谢谢你的评论。我发布了调用渲染位置详细信息的代码。如果有更好的方法来完成我的任务(为集合的每个元素创建一个HTML部分),我洗耳恭听。你基本上是在“串”打嗝。这样可能会冒出来。但是到那里的代码会解释你的错误。所以我仍然无法指出你出错的原因(要么这个代码不是你正在运行的代码,要么你从其他地方得到错误。但我会将其更改为基本(html[:h2“L”)(进入[:div](地图…))
。
(let [locations ["one" "two" "three"]
title-html [[:h2 "Locations"]]
location-html (map (fn [location] [:h3 location]) locations)]
(html (concat title-html location-html)))
"<h2>Locations</h2><h3>one</h3><h3>two</h3><h3>three</h3>"