提问人:jpaugh 提问时间:3/11/2016 最后编辑:jpaugh 更新时间:11/11/2023 访问量:3194
将 Java 数组转换为 Clojure 列表或序列?
Convert a Java array into a Clojure list or sequence?
问:
如何将 Java 数组转换为 Clojure 序列数据结构,例如列表或其他序列?
这个问题显示了如何反向;Clojure 文档展示了如何创建、改变和读取数组;但是有没有一种内置的方法可以将它们转换为列表或其他一些 Clojure 原生序列?
答:
16赞
jpaugh
3/11/2016
#1
是的,有一种方法可以将数组转换为列表!该代码会将数组转换为实现 的数组,因此可以像对待任何其他 Clojure 序列一样对待。(seq java-array-here)
ArraySeq
ISeq
评论
1赞
Mars
11/6/2023
通常,这是正确的,但通常不会对 的结果进行操作。不过,Pop 将在列表上操作。pop
seq
1赞
Mars
11/6/2023
#2
@jpaugh是对的:通常,您只需要一个序列。许多 clojure 集合函数适用于许多不同的结构,包括 seq。但是,如果您需要其他集合类型,通常可以使用:into
(def java-array (long-array (range 3)))
(into () java-array) ;=> (2 1 0)
(into [] java-array) ;=> [0 1 2]
请注意,用于创建列表会颠倒输入顺序。into
人们通常可以像使用 Clojure 集合一样使用 Java 数组。我建议在 REPL 的某些测试代码中假装数组是集合,然后看看会发生什么。通常它有效。例如:
(nth java-array 1) ;=> 1
@jpaugh的回答提供了另一个例证。
评论
0赞
jpaugh
11/11/2023
喂养我的自我的道具!9-2
评论