使用 Kotlin 的扩展函数来抑制返回值
Using Kotlin's extension function to suppress a returned value
我在 spring 启动应用程序中使用 Kotlin
。特别是在服务中,我发现某些功能需要从存储库中抑制 returned 值。例如,这里是一个 save()
保存实体而不 returning 持久化实体 id:
fun save(person: Person) {
personRepository.save(person)
}
如您所见,此函数只是将调用委托给 JpaRepository#save(...)
而不会 return 任何东西。我想做的是这样的:
fun save(person: Person) = personRepository.save(person)
为此,我创建了一个扩展函数:
fun Any.ignoreReturn() = Unit
然后调用 `personRepository#save(...) as:
fun save(person: Person) = personRepository.save(person).ignoreReturn()
我想知道的是:
- 这样做正确吗?
- 我扩展的扩展函数有副作用吗
Any
?
一种方法可能是这样做:
fun save(person: Person): Unit = let { personRepository.save(person) }
重要的部分是将函数声明为 return 单元,因此从 let
生成的代码不需要 return personRepository.save(person)
是什么 return荷兰国际集团您可以对其进行测试,只需删除 : Unit
部分,您就可以为保存功能获得不同的签名。
我在 spring 启动应用程序中使用 Kotlin
。特别是在服务中,我发现某些功能需要从存储库中抑制 returned 值。例如,这里是一个 save()
保存实体而不 returning 持久化实体 id:
fun save(person: Person) {
personRepository.save(person)
}
如您所见,此函数只是将调用委托给 JpaRepository#save(...)
而不会 return 任何东西。我想做的是这样的:
fun save(person: Person) = personRepository.save(person)
为此,我创建了一个扩展函数:
fun Any.ignoreReturn() = Unit
然后调用 `personRepository#save(...) as:
fun save(person: Person) = personRepository.save(person).ignoreReturn()
我想知道的是:
- 这样做正确吗?
- 我扩展的扩展函数有副作用吗
Any
?
一种方法可能是这样做:
fun save(person: Person): Unit = let { personRepository.save(person) }
重要的部分是将函数声明为 return 单元,因此从 let
生成的代码不需要 return personRepository.save(person)
是什么 return荷兰国际集团您可以对其进行测试,只需删除 : Unit
部分,您就可以为保存功能获得不同的签名。