You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 00:48:03