DiveIntoKotlin/DiveIntoKotlinSamples

6.5.4 非局部返回疑问

franklifeisnow opened this issue · 2 comments

//书中代码如下
fun main() {
    foo { return@foo }
}

fun foo(returning: () -> Unit) {
    println("before local return")
    returning()
    println("after local return")
    return
}
//运行结果
before local return
//我本机运行结果
before local return
after local return

希望有大佬能解疑

我也发现了这个问题,编译成字节码看一下,其实还是一个局部返回,不管lambda里面怎么返回,invoke调用结束后还是会继续往下执行。
image

同问,现在对这个带标签返回理解已经产生偏差了,网上很多博文写来写去感觉都是抄的,有大佬能详细解释一下这个点吗