使用 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()

我想知道的是:

  1. 这样做正确吗?
  2. 我扩展的扩展函数有副作用吗Any

一种方法可能是这样做:

fun save(person: Person): Unit = let { personRepository.save(person) }

重要的部分是将函数声明为 return 单元,因此从 let 生成的代码不需要 return personRepository.save(person) 是什么 return荷兰国际集团您可以对其进行测试,只需删除 : Unit 部分,您就可以为保存功能获得不同的签名。