Kotlin中如何链式拼接Lambda生成最终Lambda 等价于Java的Function.andThen()
Kotlin实现与Java
Function.andThen 等价的Lambda拼接方案 Kotlin 单参数函数类型(T) -> R(对应kotlin.Function1接口)默认提供了内置的andThen扩展方法,逻辑与Java的Function.andThen完全一致:先执行当前函数,再将返回值作为参数传入andThen指定的下一个函数执行,最终返回第二个函数的结果。
你的代码中add12的定义方式
方式1:使用标准库内置andThen(推荐,与Java写法对齐)
val add1 = { string:String -> string + "1" } val add2 = { string:String -> string + "2" } // 直接调用andThen拼接两个Lambda val add12 = add1.andThen(add2)
调用方式:Kotlin中可以直接用括号调用函数,add12("")执行后返回结果为"12",和Java侧效果完全一致。
方式2:手动拼接Lambda(无依赖,逻辑更直观)
如果不想依赖标准库扩展,也可以直接手动组装新的Lambda,逻辑等价:
val add12 = { input: String -> add2(add1(input)) }
补充说明
如果需要反向拼接(先执行第二个函数,再执行第一个函数),可以使用标准库提供的compose方法:
val add21 = add1.compose(add2) add21("") // 返回结果为"21"
多段Lambda拼接也支持链式调用:
val add123 = add1.andThen(add2).andThen { it + "3" } add123("") // 返回结果为"123"
内容的提问来源于stack exchange,提问作者Pedro Borges
相关产品推荐
相关产品推荐

