Functional Programming With Java 简明教程

Functional Programming with Java - Currying

柯里化是一种技术,用它将多参数函数调用替换为多个带有较少参数的方法调用。

请参阅以下等式。

(1 + 2 + 3) = 1 + (2 + 3) = 1 + 5 = 6

在函数中:

f(1,2,3) = g(1) + h(2 + 3) = 1 + 5 = 6

这种函数级联称为柯里化,对级联函数的调用必须产生与调用主函数相同的结果。

以下示例演示了柯里化的工作原理。

import java.util.function.Function;

public class FunctionTester {
   public static void main(String[] args) {
      Function<Integer, Function<Integer, Function<Integer, Integer>>>
         addNumbers = u -> v -> w -> u + v + w;
      int result = addNumbers.apply(2).apply(3).apply(4);
      System.out.println(result);
   }
}

Output

9