Java 在匿名类中表示currying的方法(从lambda表达式转换)。嵌套函数
嗨,我只是想检查一下我的实现和理解是否正确。我试图将一种嵌套的lambda转换成一个anon类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
函数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不是一种真正适合这种函数式编程结构的语言。你可以写咖喱函数,但我的话,它太难看了。你到底想用这个做什么?没有实际的实现。我只是想了解它是如何作为一个匿名类实现的。非常感谢!谢谢你详细的回答,非常感谢!谢谢你详细的回答。