我是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