温馨提示:本文翻译自stackoverflow.com,查看原文请点击:clojure - How to return hiccup as a list/vector
clojure clojurescript

clojure - 如何将打ic作为列表/向量返回

发布于 2020-04-15 12:29:14

我正在将打ic向量传递给一个函数,该函数会将其打成更多的打ic,但不会像我期望的那样返回它。

这是我的意思的示例:

(defn wrap-fn 
  [input]
  [div.content-box
    [input]])

(defn main-fn 
  [vector-of-hiccup]
  (foreach [hiccup from vector-of-hiccup]
    (wrap-fn hiccup-from-list)))

如何实现上述的foreach循环?

我尝试使用'apply'将wrap-fn应用于每个矢量参数,但它仅返回包装的第一个元素。我尝试创建各种循环,并且获得了相似的成功水平。

我敢肯定有办法做到这一点,请帮助我找到一个可行的方法。

查看更多

提问者
Chad Armstrong
被浏览
72
Alan Thompson 2020-02-04 23:26

您需要这样的东西:

(defn wrap-fn
  [input]
  [:div.content-box
   [input]])  ; <= you may not want to wrap `input` in a vector.

(defn main-fn
  [vector-of-hiccup]
  (vec
    (for [item vector-of-hiccup]
      (wrap-fn item))))

注意:中的:div打ic向量总是以关键字开头。另外,由于for返回的是惰性序列,因此您应使用将其转换为向量vec

此外,根据您的情况,您可能希望拥有input,而不是[input]:div.content-box

请参阅文档部分中的CLJ-模板 为宝贵的学习信息化项目。