9.函数复合
2020-07-28 本文已影响0人
学吉他的袁先生
定义:一种数学概念 f(g(x))
val add5 = {i: Int -> i + 5} // g(x)
val multiplyBy2 = {i : Int -> i * 2} // f(x)
fun main() {
val multiplyBy21 = multiplyBy2(add5(8))
println(multiplyBy21)
}
利用扩展函数以及中缀表达式可以这样子改造
val add5 = {i: Int -> i + 5} // g(x)
val multiplyBy2 = {i : Int -> i * 2} // f(x)
infix fun <P1, P2, R> Function1<P1, P2>.andThen(function: Function1<P2, R>): Function1<P1,R>{
return fun(p1: P1): R{
return function.invoke(this.invoke(p1))
}
}
fun main() {
val multiplyBy21 = multiplyBy2(add5(8))
println(multiplyBy21)
val add5AndMultiplyBy2 = add5 andThen multiplyBy2
add5AndMultiplyBy2(8)
}
打印
26
26