我仍在学习 Clojure,似乎无法找到一个简单的答案。我已经看到类似的问题用特定于 OP 问题的复杂代码回答,所以请让我知道以下内容的最准确或可接受的版本:

int[][] arrayTest = new int[width][height];
...
for (int x = 0; x < width; x++) {
  for (int y = 0; y < height; y++) {
    int a = arrayTest[x][y];
    if (a < 100) {
      arrayTest[x][y] = 0;
    }
  }
}

最佳答案

直译很简单:

(def array-test
  (make-array Integer/TYPE width height))

(doseq [x (range width)
        y (range height)]
  (when (< (aget array-test x y) 100)
    (aset-int array-test x y 0)))

但是请注意,数组在 Clojure 中并不常用。除非您想进行快速计算或使用现有的 Java 代码,否则您通常不应创建数组和其他可变数据结构。最有可能的是,您想要实现的内容可以使用 Clojure 的 persistent collections 来完成。

关于clojure - Clojure 中的简单二维数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51701976/

10-15 07:34