【问题标题】:What is this syntax in this code about lambda of Kotlin?这段代码中关于 Kotlin 的 lambda 的语法是什么?
【发布时间】:2020-02-05 17:53:19
【问题描述】:

我正在研究 Kotlin 的内联函数 Kotiln 的 lambda,,,

以下代码是关于 Kotlin 的内联函数示例

我知道 Kotlin 的 lambda 中不能有“return”

但是什么是“返回”(在第 4 行)? 为什么lambda中有“返回”?????? 怎么样??

(下面的代码运行良好,,,)

fun main() {
    shortFunc(3){
        println("First call: $it")
        return
    }
}

inline fun shortFunc(a: Int, out: (Int)->Unit){
    println("Before calling out()")
    out(a)
    println("After calling out()")
}

【问题讨论】:

  • 当一个高阶函数被标记为inline 时,如果可能,它的函数参数也将被内联。如果您将 lambda 函数传递给这样的函数,那么您将能够从 lambda 内部的外部函数(在本例中为 main)返回,因为它是内联的。

标签: kotlin lambda inline-functions


【解决方案1】:

一般return 不允许在 lambda 中使用,但 shortFunc 被标记为 inline。这允许非本地返回,在这种特定情况下,return 将使代码从封闭函数(即main)返回,因此您的程序终止。

您可以阅读更多关于非本地退货herehere

【讨论】:

    猜你喜欢
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-02
    • 2021-04-03
    • 2022-01-22
    • 1970-01-01
    • 2014-07-21
    • 1970-01-01
    相关资源
    最近更新 更多