`map` 函数可以返回向量而不是列表吗?

Nik*_* S. 3 clojure

假设我有以下函数,它用一组数字替换序列中的每个 0,并且每个其他数字都被放入一个只有该数字的集合中。

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

当我运行它,它会返回(#{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}]。我应该怎么做才能以向量而不是列表形式返回它们?

Ala*_*son 6

使用mapv. 它不是懒惰的并且总是返回一个向量。

您还应该为The Clojure CheatSheet 添加书签并始终保持浏览器选项卡打开。每天回顾一些功能,直到您熟悉所有这些功能。就像学习 Java API 一样,这需要一些时间,但值得。

请务必查看此Clojure 文档列表

享受!