java8 函数式柯李化
时间: 2023-08-04 11:33:25 浏览: 70
函数式柯里化(Currying)是指将一个多参数函数转换为一系列单参数函数的过程。在 Java 8 中,可以使用 lambda 表达式和方法引用来实现函数式柯里化。
下面是一个例子:
假设有一个接收两个参数的函数:
```
public static int add(int a, int b) {
return a + b;
}
```
可以使用函数式柯里化将其转换为一系列单参数函数:
```
public static void main(String[] args) {
// 使用 lambda 表达式实现函数式柯里化
IntFunction<IntUnaryOperator> curriedAdd = a -> b -> a + b;
// 使用方法引用实现函数式柯里化
IntBinaryOperator add = Integer::sum;
IntFunction<IntUnaryOperator> curriedAdd = add::applyAsInt;
// 使用函数式柯里化求和
IntUnaryOperator add5 = curriedAdd.apply(5);
int result = add5.applyAsInt(3); // result = 8
}
```
这里定义了一个 `IntFunction<IntUnaryOperator>` 类型的变量 `curriedAdd`,它接收一个整数参数,返回一个 `IntUnaryOperator`,即一个单参数函数。利用 lambda 表达式或方法引用,可以实现柯里化。
在上面的例子中,先通过 `curriedAdd.apply(5)` 得到一个单参数函数 `add5`,然后再调用 `add5.applyAsInt(3)`,即可得到 `5 + 3 = 8` 的结果。
阅读全文