Reputation: 17774
A Java API I am Clojure interoping with requires that I pass it a 2d array of doubles; double[][]. How do I create a primitive 2d array of doubles in Clojure? I am looking for something like this
(double-array-2d [[1 2] [3 4]])
This function would have a Java return type of double[][].
Upvotes: 21
Views: 3061
Reputation: 72926
Try this:
(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))
Upvotes: 3