在矢量上调用concat会返回一个列表。作为一个总的菜鸟我会期望结果也是一个矢量。为什么要转换成列表?
示例:
user=> (concat [1 2] [3 4] [5 6])
(1 2 3 4 5 6)
; Why not: [1 2 3 4 5 6] ?
答案 0 :(得分:36)
concat返回一个懒惰的序列。
user=> (doc concat)
-------------------------
clojure.core/concat
([] [x] [x y] [x y & zs])
Returns a lazy seq representing the concatenation of the elements in the supplied colls.
您可以将其转换回带有以下内容的矢量:
user=> (into [] (concat [1 2] [3 4] [5 6]))
[1 2 3 4 5 6]
使用瞬态,所以它很快就可以了。