Развернуть последовательность в отдельные скаляры - PullRequest
3 голосов
/ 29 июня 2011

Я хочу передать членам ленивого seq, созданного map, в качестве отдельных аргументов другую функцию.Есть ли функция, которая склеивает (ленивый) seq?

1 Ответ

6 голосов
/ 29 июня 2011

Использование apply .

(defn f [a b c d e]
  (str "a = " a " b = " b " c = " c " d = " d " e = " e))

(println (apply f (range 5)))

;; prints: a = 0 b = 1 c = 2 d = 3 e = 4

Как видите, функция f принимает 5 аргументов и (диапазон 5) возвращает ленивый seq из 5 аргументов.

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

...