Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在匿名类中表示currying的方法(从lambda表达式转换)。嵌套函数_Java_Lambda_Anonymous Function - Fatal编程技术网

Java 在匿名类中表示currying的方法(从lambda表达式转换)。嵌套函数

Java 在匿名类中表示currying的方法(从lambda表达式转换)。嵌套函数,java,lambda,anonymous-function,Java,Lambda,Anonymous Function,嗨,我只是想检查一下我的实现和理解是否正确。我试图将一种嵌套的lambda转换成一个anon类 函数h=x->y->z->x+y+z 这是将其表示为anon类的适当方式吗 Function<Integer,Function<Integer,Function<Integer,Integer>>> h = new Function <> ( int x, y; @Override Function<Integer,Function<In

嗨,我只是想检查一下我的实现和理解是否正确。我试图将一种嵌套的lambda转换成一个anon类
函数h=x->y->z->x+y+z

这是将其表示为anon类的适当方式吗

Function<Integer,Function<Integer,Function<Integer,Integer>>> h = new Function <> ( 
int x, y;
@Override 
Function<Integer,Function<Integer,Integer>> apply ( Integer x)

              return y-> z-> (x+y+z);
   }
};
函数h=新函数(
int x,y;
@凌驾
函数应用(整数x)
返回y->z->(x+y+z);
}
};

为了将lambda转换为匿名函数,您应该一点一点地分解它,每个
->
对应一个匿名函数实例化,其结果如下:

var h = new Function<Integer,Function<Integer,Function<Integer,Integer>>>() {
  public Function<Integer,Function<Integer,Integer>> apply(Integer x) {
    return new Function<Integer,Function<Integer,Integer>>() {
      public Function<Integer,Integer> apply(Integer y) {
        return new Function<Integer,Integer>() {
          public Integer apply(Integer z) {
            return x + y + z;
          }
        };
      }
    };
  }
};
var h=新函数(){
公共函数应用(整数x){
返回新函数(){
公共函数应用(整数y){
返回新函数(){
公共整数应用(整数z){
返回x+y+z;
}
};
}
};
}
};

为了将lambda转换为匿名函数,您应该一点一点地分解它,每个
->
对应一个匿名函数实例化,其结果如下:

var h = new Function<Integer,Function<Integer,Function<Integer,Integer>>>() {
  public Function<Integer,Function<Integer,Integer>> apply(Integer x) {
    return new Function<Integer,Function<Integer,Integer>>() {
      public Function<Integer,Integer> apply(Integer y) {
        return new Function<Integer,Integer>() {
          public Integer apply(Integer z) {
            return x + y + z;
          }
        };
      }
    };
  }
};
var h=新函数(){
公共函数应用(整数x){
返回新函数(){
公共函数应用(整数y){
返回新函数(){
公共整数应用(整数z){
返回x+y+z;
}
};
}
};
}
};

很明显,您编写的基于匿名类的函数甚至没有编译。还有,为什么匿名函数(
intx,y;
)会有一些状态?我在下面发布了一个答案,希望能解释一些事情:)Java不是一种真正适合这种函数式编程结构的语言。你可以写咖喱函数,但我的话,它太难看了。你到底想用这个做什么?没有实际的实现。我只是想了解它是如何作为一个匿名类实现的。很明显,您编写的基于匿名类的函数甚至都没有编译。还有,为什么有一些状态与匿名函数(
intx,y;
)关联?我在下面贴了一个答案,希望能解释一下:)Java不是一种真正适合这种函数式编程结构的语言。你可以写咖喱函数,但我的话,它太难看了。你到底想用这个做什么?没有实际的实现。我只是想了解它是如何作为一个匿名类实现的。非常感谢!谢谢你详细的回答,非常感谢!谢谢你详细的回答。