Kotlin 函数复合 不念不忘少年蓝@ 2022-05-28 09:22 160阅读 0赞 一、函数复合的概念 f(g(x)) 二、看一些小例子 package net.println.kotlin.chapter5.compose /** * @author:wangdong * @description: */ /**定义两个函数*/ val add5 = {i: Int -> i + 5} //加5 val multiplyBy2 = {i: Int -> i * 2} //乘2 fun main(args: Array<String>) { println(multiplyBy2(add5(8))) //(5 + 8) * 2 val add5AndMultiplyBy2 = add5 andThen multiplyBy2 val add5ComposeMutiplyBy2 = add5 compose multiplyBy2 println(add5AndMultiplyBy2(8)) //m(x)= f(g(x)) println(add5ComposeMutiplyBy2(8)) //m(x) = g(f(x)) } /**定义一个复合函数*/ /** * p1、p2是参数 * R是返回值 * andThen拓展函数 * 参数:Function1<P2,P2>,第一参数是参数类型,第二个参数是返回值类型 * 返回值:Function1<P1,R> * infix中缀表达式 */ infix fun <P1,P2,R> Function1<P1,P2>.andThen(function: Function1<P2,R>): Function1<P1,R>{ //进行复合 //返回了一个函数 return fun (p1: P1):R{ //函数里面function.invoke把这个function又调用了一遍 //然后又把自己的返回值传给了上去 return function.invoke(this.invoke(p1)) } } infix fun <P1,P2,R> Function1<P2,R>.compose(function: Function1<P1,P2>):Function1<P1,R>{ return fun (p1: P1):R{ return this.invoke(function.invoke(p1)) } } 输出的结果 `26 26 21`
还没有评论,来说两句吧...