【发布时间】:2016-06-23 15:43:59
【问题描述】:
在Functional Programming in Java 一书中,作者仅使用Function<T, U> 接口构建了一个 compose 函数(但该接口不是 Java 8 附带的,但非常相似),其 sn-p 如下所示
public interface Function<T, U> {
U apply(T arg);
}
虽然我可以理解下面compose的方法版本,它接受2个函数并返回一个组合函数
public static final Function<Integer, Integer> compose (final Function<Integer, Integer> f1,
final Function<Integer, Integer> f2) {
arg -> f1.apply(f2.apply(arg));
}
我只是无法理解下面使用 Function 和 lambdas 的 compose 实现
static Function<Function<Integer, Integer>,
Function<Function<Integer, Integer>,
Function<Integer, Integer>>> compose =
x -> y -> z -> x.apply(y.apply(z));
PS:我无法忘记这一点并继续阅读其余部分:(
【问题讨论】:
-
我看到了如何用给定的函数组合两个 fxn,但关心的是如何实现该组合函数
-
这真的缺少 C 指针!
标签: java lambda functional-programming java-8