为什么要将 lambda 参数移出括号?

Why should lambda argument be moved out of parentheses?

Kotlin 编码约定 (https://kotlinlang.org/docs/coding-conventions.html#lambdas) 说: “如果调用采用单个 lambda,请尽可能将其传递到括号外。”

这个推荐的原因是什么?就我个人而言,它让我觉得是一个令人困惑的特殊外壳,导致了一个丑陋的代码,但我想这可能是有充分理由的。

正如您所说,这只是一个建议,因为它使代码更易于阅读(在 JetBrains 的人看来,在我看来也是如此)。您的代码也可以工作,但变得更难阅读。

val list = emptyList<Int>()
list.filter { it > 10 }  // no parentheses
list.filter({it > 10})   // with parentheses and harder to read

当您有类似上面的代码时,您可以在下面看到对 IntelliJ 执行“检查代码”操作的结果。这显然只是一个风格“问题”。