如何在Clojure中创建一个原始的二维(2d)双精度数组?

2022-09-02 03:49:33

我正在与Clojure互操作的Java API要求我向它传递一个2d双精度数组;双[][]。如何在Clojure中创建一个原始的2d双精度数组?我正在寻找这样的东西

(double-array-2d [[1 2] [3 4]])

此函数的 Java 返回类型为 double[][]。


答案 1

试试这个:

(into-array (map double-array [[1 2] [3 4]]))

答案 2

试试这个:

(defn double-array-2d [coll]
  (let [w (count coll)
        h (apply max (map count coll))
        arr (make-array Double/TYPE w h)]
    (doseq [x (range w)
            y (range h)]
      (aset arr x y (double (get-in coll [x y]))))
    arr))

推荐