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 <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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。