Как вернуть сбой в виде списка / вектора - PullRequest
1 голос
/ 03 февраля 2020

Я передаю вектор сбоя в функцию, которая просто оборачивает его в большее количество сбоя, но не возвращает его, как я ожидал.

Вот пример того, что я имею в виду:

(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 l oop выше?

Я пытался использовать ' apply ', чтобы применить wrap-fn к каждому из векторных параметров, но он возвращает только первый обернутый элемент. Я пытался создавать всевозможные циклы, и у меня схожие уровни успеха.

Я уверен, что есть способ сделать это, пожалуйста, помогите мне найти один, который работает.

1 Ответ

2 голосов
/ 03 февраля 2020

Вам нужно что-то вроде этого:

(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 возвращает ленивую последовательность, вы должны преобразовать ее в вектор с vec.

Также, в зависимости от вашей ситуации, вы можете захотеть иметь input вместо [input] в :div.content-box.

См. раздел документации проекта clj-template для получения ценной обучающей информации.

...