Может ли функция `map` возвращать вектор вместо списка? - PullRequest
2 голосов
/ 12 января 2020

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

(defn helper
  [lst]
  (map #(if (zero? %) 
          (sorted-set 1 2 3 4 5 6 7 8 9)
         #{%})
    lst) )

Когда я запускаю его, он возвращает (#{1 2 3 4 5 6 7 8 9} #{2} #{5} #{1 2 3 4 5 6 7 8 9} #{1 2 3 4 5 6 7 8 9}) но я хочу, чтобы он возвращал наборы в вектор, а не в список, например: [#{1 2 3 4 5 6 7 8 9} #{2} #{5} #{1 2 3 4 5 6 7 8 9} #{1 2 3 4 5 6 7 8 9}]. Что я должен сделать, чтобы он возвращал их в векторе, а не в списке?

1 Ответ

5 голосов
/ 12 января 2020

Используйте mapv. Он не ленивый и всегда возвращает вектор.

Вам также следует добавить в закладки Clojure CheatSheet и всегда держать вкладку браузера открытой для него. Ежедневно просматривайте несколько функций, пока не ознакомитесь со всеми из них. Как и изучение Java API, это занимает некоторое время, но оно того стоит.

Наслаждайтесь!

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