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

Kotlin中传递Lambda作为参数时如何使其返回SomeEntity类型?

问题解决:修正Lambda返回类型为SomeEntity

你的问题出在Lambda定义里多嵌套了一层大括号,导致它返回的是函数类型() -> SomeEntity,而非直接返回SomeEntity。按照以下步骤修改即可:

1. 修正Lambda变量的定义

去掉箭头->后面的额外大括号,让代码块直接执行并返回SomeEntity:

var lambda = { existingEntity: SomeEntity?, param1: String? ->
    val test = someFunction(existingEntity)
    existingEntity?.copy(name = param1)!!
}

2. 调整updateFunc的参数类型

把lambda参数的类型从(SomeEntity?, String?) -> () -> SomeEntity改为(SomeEntity?, String?) -> SomeEntity:

private fun updateFunc(param2: UUID, param1: String?, lambda: (SomeEntity?, String?) -> SomeEntity): Mono<Boolean>{
    return repository.findById(param2)
        .flatMap { existingEntity ->
            repository.update(existingEntity, lambda(existingEntity, param1))
                .map { true }
        }
}

3. 简化调用逻辑(可选)

flatMap里的val existingEntity = it可以直接用参数名替换,让代码更简洁,上面的示例已经做了这个优化。

修改后,lambda会直接返回SomeEntity类型,repository.update()就能正常接收参数了。

内容的提问来源于stack exchange,提问作者Aditya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 02:55:00