我真的是clojure的新手! mapcat如何运作?

最佳答案

mapcat function只是将concat function应用于map function结果的快捷方式:

=> (mapcat reverse [[3 2 1 0] [6 5 4] [9 8 7]])
(0 1 2 3 4 5 6 7 8 9)

=> (apply concat (map reverse [[3 2 1 0] [6 5 4] [9 8 7]]))
(0 1 2 3 4 5 6 7 8 9)


参考文献:


official Clojure API docs
clojuredocs.org website




通过将mapcatvector function结合使用,可以隔行扫描几个集合:

=> (mapcat vector [1 2 3 4 5 6] [:q :w :e :r :t :y])
(1 :q 2 :w 3 :e 4 :r 5 :t 6 :y)


使用list function而不是vector将获得相同的结果。

10-08 12:45