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

上一篇下一篇

猜你喜欢

热点阅读