mic*_*wth 5 java lambda currying partial-application
public static <T, U, R> Function<U, R> partial(BiFunction<T, U, R> f, T x) {
return (y) -> f.apply(x, y);
}
Run Code Online (Sandbox Code Playgroud)
在上面的表达式中,我可以理解函数partial返回另一个函数,Function<U, R>。它Function<U, R>本身返回一个 R 值。其余的static <T, U, R>代表什么?我的意思是如果Function<U, R>返回一个 R 是怎么回事<T, U, R>?
(我知道它在 Java 术语中在技术上不正确,但我将在下面说“参数”,我的意思是“形式参数”,因为在任何地方混合“形式参数”和“类型参数”是令人困惑的。)
T是参数的类型参数x。
partial 接受两个参数:
f, 一个接受 aT和 aU并返回 an的函数R:BiFunction<T, U, R> f
x,这是类型T:T x
partial返回一个只接受 a U(不是 aT和 a U)并返回的新函数R。T新函数不需要参数,而是在调用 时使用x提供的 to 。partialf
简而言之:它返回一个新函数,其中第一个参数(类型T)已通过的参数部分应用(柯里化)。partialx
我们有理由<T, U, R>附近的声明的开头是,这是Java的语法如何让我们指定partial是一种通用方法,使用类型参数T,U以及R(否则,它们看起来像类型的名称,而不是输入参数)。
| 归档时间: |
|
| 查看次数: |
5524 次 |
| 最近记录: |