我是Clojure的一個Java API,需要我將它傳遞給一個2d的雙精度數組;雙[][]。我如何創建一個基元二維Clojure數組?我期待這樣的事情如何在Clojure中創建一個原始的二維(2d)雙打數組?
(double-array-2d [[1 2] [3 4]])
此功能將有雙重[] []一個Java返回類型。
我是Clojure的一個Java API,需要我將它傳遞給一個2d的雙精度數組;雙[][]。我如何創建一個基元二維Clojure數組?我期待這樣的事情如何在Clojure中創建一個原始的二維(2d)雙打數組?
(double-array-2d [[1 2] [3 4]])
此功能將有雙重[] []一個Java返回類型。
試試這個:
(into-array (map double-array [[1 2] [3 4]]))
試試這個:
(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))
謝謝@布賴恩。我喜歡你的博客,BTW。 – 2010-10-06 03:10:36
謝謝@fogus。這是一個不錯的,優雅的解決方案。我期待完成你的書。 – 2010-10-06 03:07:35
這是可能的最快方式嗎?這是否已經照顧到類型暗示? – 2010-10-06 18:47:49
4年前Upvoted。仍然是一個很棒的答案。 – charleslparker 2017-04-20 21:05:34