[英]Passing function as parameter in JavaScript
必须将一小段代码从 JavaScript 移植到 JAVA:
var N = 3;
var w = 8, h = 8;
var matrix = [
[1, 0, 0, 0, 0, 0, 0, 0],
[1, 1, 0, 0, 0, 0, 0, 0],
[1, 1, 1, 0, 0, 0, 0, 0],
[1, 1, 1, 1, 0, 0, 0, 0],
[1, 1, 1, 1, 1, 0, 0, 0],
[1, 1, 1, 1, 1, 1, 0, 0],
[1, 1, 1, 1, 1, 1, 1, 0],
[1, 1, 1, 1, 1, 1, 1, 1]
];
//[1, 1, 1, 1, 1, 1, 0, 1, 1]
console.log(complexFunction(2, 1));
//first function
function simpleFunction(f_) {
var out = new Array(N * N);
for (var y = 0; y < N; y++) {
for (var x = 0; x < N; x++) {
out[x + y * N] = f_(x, y);
}
}
return out;
};
//second function
function complexFunction(x_, y_) {
return simpleFunction(function (dx, dy) { return matrix[(x + dx) % w][(y + dy) % h]; });
};
已经尝试过 Callable 没有任何成功。 理想情况下,移植的结果应该与 JavaScript 源具有相同的结构。
不幸的是,我必须使用没有 lambda 表达式的 Java 7,因此必须使一切尽可能简单:
Integer[] complexFunction(int dx_, int dy_){
Integer[] out = new Integer[N * N];
for (Integer y = 0; y < N; y++) {
for (Integer x = 0; x < N; x++) {
out[x + y * N] = matrix[(x + dx_) % w][(y + dy_) % h];
}
}
return out;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.