Итак, я работаю над потоковой функцией, которая будет суммировать некоторые показатели для нескольких событий. Для этого я использую функцию project
, и она выглядит примерно так:
(project [(func (:service event) (nth service-list 0))
(func (:service event) (nth service-list 1))
(func (:service event) (nth service-list 2))]
(..))
service-list
— это аргумент функции окружения, который содержит вектор сервисов, которые необходимо сложить. func
— это функция, которая принимает два аргумента и возвращает true
/false
Использование приведенного выше фрагмента работает нормально, но я хотел бы иметь возможность упростить его, чтобы работал вектор, который больше или меньше 3 элементов.
Пока у меня это:
(project (mapv (fn[service] (
`func (:service event) ~service)
) service-list)))
(..)
который, я думаю, возвращает вектор функций, которые не оценены. Я пошел с этим подходом, как только понял, что project
— это макрос. Не знаю, правильно ли я поступаю...