Kotlin 从lambda表达式返回

174 阅读1分钟

非局部返回

在 Kotlin 中,只能对具名或匿名函数使用正常的、非限定的 return 来退出。 要退出一个 lambda 表达式,需要使用一个标签。 在 lambda 表达式内部禁止使用裸 return,因为 lambda 表达式不能使包含它的函数返回: 在这里插入图片描述

标签: 在 Kotlin 中任何表达式都可以用标签(label)来标记。 标签的格式为标识符后跟 @ 符号,例如:abc@、fooBar@都是有效的标签。 要为一个表达式加标签,我们只要在其前加标签即可。

loop@ for (i in 1..100) {
    // ……
}

现在,我们可以用标签限制 break 或者continue:

loop@ for (i in 1..100) {
    for (j in 1..100) {
        if (……) break@loop
    }
}

标签限制的 break 跳转到刚好位于该标签指定的循环后面的执行点。 continue 继续标签指定的循环的下一次迭代。

如何从 Lambda 返回?

首先,普通的 lambda 是不允许直接使用 return 的 。 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述