如何在Clojure中将向量转换为列表

3
我尝试过这个。
koan-engine.runner=> (map identity [1 2 3])
(1 2 3)
koan-engine.runner=> (type (map identity [1 2 3]))
clojure.lang.LazySeq
koan-engine.runner=> (type '(1 2 3))
clojure.lang.PersistentList

但它看起来只是一个列表,实际上它是一个LazySeq,那么如何将向量转换为列表?


1
请参考http://clojure.org/reference/data_structures#Collections和http://clojure.org/reference/sequences,以更好地了解Clojure集合类型。 - Piotrek Bzdyl
@PiotrekBzdyl 谢谢。 - axiaoxin
重要问题是:你为什么要这样做?在那个列表上,你想要执行什么操作,而在向量上无法执行呢? - NielsK
2
你可以像这样在向量上调用seq函数 (seq [1 2 3]),它会返回 (1 2 3)。 - FieryCod
2个回答

9
user=> (apply list [1 2 3])
(1 2 3)
user=> (type (apply list [1 2 3]))
clojure.lang.PersistentList

list 创建列表,因此您只需将其应用到集合中即可。


3

另一个选择是使用into函数:

user=> (into '() [1 2 3])
(3 2 1)
user=> (type (into '() [1 2 3]))
clojure.lang.PersistentList
user=> (into '() (reverse [1 2 3]))
(1 2 3)
user=> (type (into '() (reverse [1 2 3])))
clojure.lang.PersistentList

另请参阅《Clojure Cookbook》中的从现有数据结构创建列表


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接