gpt4 book ai didi

kotlin - 应将 Lambda 参数移出括号

转载 作者:IT老高 更新时间:2023-10-28 13:46:42 26 4
gpt4 key购买 nike

IntelliJ 提出以下投诉:

Lambda argument should be moved out of parentheses

val profile = loadProfiles()
profile.sortedWith(Comparator({ profile1, profile2 ->
if (profile1.age > profile2.age) return@Comparator 1
if (profile1.age < profile2.age) return@Comparator -1
return@Comparator 0
}))

data class Developer(var age: Int)

fun loadProfiles(): List<Developer> {
val listOfNumber = listOf<Developer>(Developer(2), Developer(5), Developer(3))

return listOfNumber
}

我应该如何格式化以上内容以消除投诉?此外,排序代码不会排序。是什么导致了问题?

最佳答案

这个警告是因为在 Kotlin 中 lambda 参数可以(并且实际上应该)在括号之外。

看这个:

fun onClick(action: () -> Unit) { ... }

当你使用这样的功能时,你可以使用:

view.onClick({ toast(it.toString())} )
view.onClick() { toast(it.toString()) }
view.onClick { toast(it.toString()) }

所有这些形式都是正确的(编译器不会失败),但在 Kotlin Style Guide 你会发现以下语句:

If a call takes a single lambda, it should be passed outside of parentheses whenever possible.

@见 https://kotlinlang.org/docs/reference/coding-conventions.html#lambda-formatting

这就是 IntelliJ 显示警告的原因。您可以按 Alt+Enter 并且 IntelliJ 应该显示正确的解决方案,或者只是将 lambda 移出括号。如果 lambda 只是参数,也请删除括号。

什么时候 lambda 必须在括号中?仅当它不是函数中的最后一个参数时。

关于kotlin - 应将 Lambda 参数移出括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53375316/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com