什么是 Kotlin 中的尾随 Lambda 和逗号?

2022-08-10  本文已影响0人  小城哇哇

尾随 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

上一篇下一篇

猜你喜欢

热点阅读