仅带有 return 语句的 Kotlin lambda 函数

Hit*_*pta 2 intellij-idea kotlin

我正在努力应对一个我不明白其含义的警告。请帮助我理解并解决这个问题。然而,它建议使用我不想使用的带标签的退货,因为它对我来说看起来有点丑陋。还有其他办法吗?

带有 lambda 返回的警告

zsm*_*b13 5

让我们采用一个带有 lambda 参数的函数,例如let

user?.let { it.name }
Run Code Online (Sandbox Code Playgroud)

您可以使用属性引用而不是 lambda 执行相同的操作:

user?.let(User::name)
Run Code Online (Sandbox Code Playgroud)

显然 - 由于这个 IntelliJ 检查已经到位 - 意外地将两者结合起来并在大括号使用属性引用而不是其中之一是一个常见的错误,如下所示:

user?.let { User::name }
Run Code Online (Sandbox Code Playgroud)

...或者像这样:

user?.let { user::name }
Run Code Online (Sandbox Code Playgroud)

这将导致将该属性引用作为返回值而不是您可能期望的名称。