Clojure:定义2D-primitives数组,如double [] []

时间:2016-07-13 12:39:12

标签: arrays clojure

我有像

这样的2D矢量
(->> (map double-array data)
     (to-array-2d))

我想把它变成双[] []。

我检查了clojure.core并尝试了:

1)

(->> (map double-array data)
     (double-array))

不幸的是,它返回了Object [] []类型的数据,这在Java互操作中失败了。

2)

(def double-2d-array-type
  (type (double-array [])))

  (->> (map double-array data)
       (into-array double-2d-array-type))) 

当然它不起作用,因为双数组需要一组数字

3)我没有编码,因为它很重,我不知道是否存在esle,但我可以用(make-array Double / Type 2 2)初始化double [] [] [2 2得到了alen]然后用循环填充它。 就像在Java中一样。

4)简短但有点扭曲

{{1}}

有直接方法吗?如果可以直接调用double []那就更好了。

喜欢"(插入数组double []数据)"

1 个答案:

答案 0 :(得分:1)

只需删除into-array的第一个参数:

(into-array (map double-array data))

只要输入序列中至少有一个元素,into-array就可以查看其类型以猜测所需的输出数组类型。这种猜测并不总是你想要的,因为继承,但对于原语,它永远不会是错误的。