Clojure - 将列表转换为Java数组
有没有任何习惯的方法将Clojure列表转换为Java数组,除了首先将其转换为向量,并使用 into-array (意味着除之外的东西数组(vec my-list))
,因为我不需要额外的开销)?
Is there any idiomatic way of converting Clojure list into Java array, other than first converting it to vector and using into-array (means, something other than (into-array (vec my-list))
, as I don't want additional overhead)?
你的问题似乎是基于一个假的前提。数组不需要采取向量,它需要一个可接受的值。文件( http://clojuredocs.org/clojure_core/clojure.core/into-array )包含在非向量序列上使用数组的示例:
Your question seems to be based on a false premise. into-array does not need to take a vector, it takes a seqable value. The documentation ( http://clojuredocs.org/clojure_core/clojure.core/into-array ) contains examples of using into-array on a non-vector sequence:
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.
在列表中调用它也同样如此:
Calling it on a list works just as well:
user=> (into-array (list 1 2 3))
#<Long[] [Ljava.lang.Long;@138297fe>