是否有任何惯用的方式将 Clojure 列表转换为 Java 数组,而不是首先将其转换为向量并使用into-array(意味着,除了 之外的东西(into-array (vec my-list))
,因为我不想要额外的开销)?
问问题
2662 次
2 回答
11
你的问题似乎是基于一个错误的前提。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>
于 2013-05-20T10:36:58.640 回答
1
因为我需要一个专门的整数数组,所以我使用了int-array
函数,它将列表作为参数。
于 2013-05-20T10:21:41.677 回答