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
相关产品推荐
相关产品推荐

