9.函数复合

定义:一种数学概念 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  Function1.andThen(function: Function1): Function1{
    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

你可能感兴趣的:(9.函数复合)