在JavaScript中作为参数传递函数

在JavaScript中作为参数传递函数,javascript,java,parameters,porting,Javascript,Java,Parameters,Porting,必须将一小段代码从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],

必须将一小段代码从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]; });

};
var N=3;
var w=8,h=8;
var矩阵=[
[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]
log(complexFunction(2,1));
//第一功能
函数simpleFunction(f_2;){
var out=新数组(N*N);
对于(变量y=0;y
我尝试过Callable,但没有成功。
理想情况下,移植的结果应该与JavaScript源代码具有相同的结构。

不幸的是,我必须使用Java 7,它没有lambdas, 因此,我们必须让一切尽可能简单:

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; 

}
Integer[]complexFunction(int-dx,int-dy){
整数[]out=新整数[N*N];
对于(整数y=0;y
您需要发布您的Java代码,并解释您正在尝试做什么,以及在哪里遇到问题。Javascript代码对于“如何在Java中传递函数作为引用”的问题并不重要。如果您使用的是Java 8或更高版本,您可以使用。问题是什么?不要指望我们为您做翻译工作。从你自己开始,然后,当你陷入困境时,寻求帮助。这个答案除了你之外对任何人都没有用。这个问题应该删除。