【问题标题】:How do I create a primitive two-dimensional (2d) array of doubles in Clojure?如何在 Clojure 中创建一个原始的二维 (2d) 双精度数组?
【发布时间】:2011-04-21 13:23:07
【问题描述】:

我与 Clojure 互操作的 Java API 要求我向其传递一个二维数组;双倍的[][]。如何在 Clojure 中创建 primitive 二维双精度数组?我正在寻找类似的东西

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

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

【问题讨论】:

    标签: java clojure


    【解决方案1】:

    试试这个:

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

    【讨论】:

    • 谢谢@fogus。这是一个不错的、优雅的解决方案。我期待着你的书完成。
    • 这是最快的方法吗?这是否已经处理了类型提示?
    【解决方案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))
    

    【讨论】:

    • 谢谢@Brian。我喜欢你的博客,顺便说一句。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-15
    相关资源
    最近更新 更多