如何 return 作为 list/vector 打嗝

How to return hiccup as a list/vector

我将 hiccup 向量传递给一个函数,该函数只是将它包装在更多 hiccup 中,但它并不像我期望的那样 return。

这是我的意思的一个例子:

(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 应用到每个矢量参数,但它只 return 包裹了第一个元素。我已经尝试创建各种循环,并且取得了类似的成功。

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

你需要这样的东西:

(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 中的 :。打嗝向量总是以关键字开头。此外,由于 for returns 是一个惰性序列,您应该将其转换为带有 vec.

的向量

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

请参阅 the Documentation section of the clj-template 项目以获取有价值的学习信息。