首页 > 解决方案 > 在匿名类中表示柯里化的方式(从 lambda 表达式转换)。嵌套函数

问题描述

嗨我只想检查我的实施和理解是否正确。我试图将一种嵌套的 lambda 转换为匿名类 Function<Integer,Function<Integer,Function<Integer,Integer>>> h = x -> y -> z-> x + y + z

这是将其表示为匿名类的适当方式吗?

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);
   }
};

标签: javalambdaanonymous-function

解决方案


为了将 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;
          }
        };
      }
    };
  }
};

推荐阅读