除了首先将其转换为向量并使用 之外,是否有任何惯用的方法将 Clojure 列表转换为 Java 数组?成阵列 (意思是,除 (into-array (vec my-list))
之外的东西,因为我不想要额外的开销)?
最佳答案
你的问题似乎是基于一个错误的前提。 into-array 不需要采用向量,它采用可排序的值。文档 ( http://clojuredocs.org/clojure_core/clojure.core/into-array ) 包含在非向量序列上使用 into-array 的示例:
user=> (into-array (range 4))
#<Integer[] [Ljava.lang.Integer;@63d6dc46>
user=> (type (range 4))
clojure.lang.LazySeq
user=> (doc range)
-------------------------
clojure.core/range
([] [end] [start end] [start end step])
Returns a lazy seq of nums from start (inclusive) to end
(exclusive), by step, where start defaults to 0, step to 1, and end
to infinity.
在列表上调用它也同样有效:
user=> (into-array (list 1 2 3))
#<Long[] [Ljava.lang.Long;@138297fe>
关于list - Clojure - 将列表转换为 Java 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16647261/