我仍在学习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;
}
}
}
答案 0 :(得分:6)
直译很简单:
(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来实现。
答案 1 :(得分:0)
表示为序列序列...
user=> (doc repeat)
-------------------------
clojure.core/repeat
([x] [n x])
Returns a lazy (infinite!, or length n if supplied) sequence of xs.
nil
user=> (def width 8)
#'user/width
user=> (def height 6)
#'user/height
user=> (repeat width 0)
(0 0 0 0 0 0 0 0)
user=> (pprint (repeat height (repeat width 0)))
((0 0 0 0 0 0 0 0)
(0 0 0 0 0 0 0 0)
(0 0 0 0 0 0 0 0)
(0 0 0 0 0 0 0 0)
(0 0 0 0 0 0 0 0)
(0 0 0 0 0 0 0 0))
nil