尾随 lambda 和尾随逗号是 Kotlin 的 2 个重要特性,如果您是 Kotlin 新手,您必须知道!
尾随 lambda在 Kotlin 中是其他编程语言所没有的新事物。至少,我不知道有任何其他编程语言支持它。
当你看到这样的代码时:
var result = operateOnNumbers(a, b) { input1, input2 ->
input1 + input2
}
println(result)
它基本上意味着operateOnNumbers()
有3个参数。最后一个参数是一个函数定义,你通常要么传入函数引用,要么传入lambda。
var result = operateOnNumbers(
input1 = a,
input2 = b,
operation = { input1, input2 ->
input1 + input2
}
)
println(result)
不知何故,我仍然不习惯这种尾随的 lambda 语法。它看起来像一个函数实现。
所以每次看到 Trailing Lambda 语法时,我的脑海里总是需要自动映射到这个(括号外的代码实际上是函数的最后一个参数)。
的签名和实现operateOnNumbers()
如下所示:
fun operateOnNumbers(
input1: Int,
input2: Int,
operation: (Int, Int) -> Int): Int {
return operation(input1, input2)
}
另一方面,尾随逗号在其他语言中很常见。
尾随逗号
var result = operateOnNumbers(
a,
b, // trailing comma here
) { input1, input2 ->
input1 + input2
}
没有尾随逗号
var result = operateOnNumbers(
a,
b // no trailing comma here
) { input1, input2 ->
input1 + input2
}
使用它的好处是可以更轻松地进行差异和合并。对我来说,它使我的复制和粘贴生活更轻松。是的,我做了很多复制和粘贴!
结论
我希望你喜欢这篇短文。我想写一篇关于这个的博客(尤其是 Trailing Lambda),因为它有时让我感到困惑,尤其是函数调用有点复杂。我总是需要提醒自己,括号外的代码其实是函数的最后一个参数。
链接:https://vtsen.hashnode.dev/what-is-trailing-lambda-and-comma-in-kotlin
网友评论