Clojure: получить значения из каждого вектора векторов и передать их в качестве аргумента другой функции - PullRequest
0 голосов
/ 23 октября 2018

Я хочу взять значения из вектора векторов и передать эти значения в качестве аргумента другой функции.Я хочу вызвать другую функцию как можно больше векторов в коллекции векторов.

Например:

Это демонстрационный код, который объяснит, что я пытаюсь

    (defn demo
            [arg1 arg2 arg3 arg4 arg5]
            (println "====== in Demo=======")
            (println arg1 arg2 arg3 arg4 arg5)
    )

    (def vv [["item1" "item2" "item3" 4] ["item5" "item6" "item7" 80.0] .....])

Мне нужна функция, которая может перебирать vv, принимать значение каждого v и передавать его в качестве аргумента demo

    (def somefun 
    iterate [i vv] demo (get v 0) (get v 1) (get v 2) (get v 3)) 

;;это должно повториться для всех векторов в vv

1 Ответ

0 голосов
/ 11 ноября 2018

Поскольку итерация в функциональных языках часто означает map, я бы сделал это следующим образом:

(defn somefun [vv]
    (map (partial apply demo) vv)

Карта повторяется по всем векторам.Функция partial добавляет каждый v к функции отображения.В конце вы вызываете (apply demo v) для каждого v в vv.

. apply берет вектор и превращает его элементы в аргументы для demo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...