Kotlin专题深入浅出AndroidKotlin编程

【第4篇】Kotlin的返回和跳转详解

2019-06-13  本文已影响0人  爱学习的蹭蹭

1、返回和跳转

1.1 Kotlin 有三种结构化跳转表达式:

val s = person.name ?: return

2、Break 与 Continue 标签

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

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

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

3、标签处返回

fun foo() {
    listOf(1, 2, 3, 4, 5).forEach {
        if (it == 3) return // 非局部直接返回到 foo() 的调用者
        print(it)
    }
    println("this point is unreachable")
}
fun foo() {
    listOf(1, 2, 3, 4, 5).forEach lit@{
       // 局部返回到该 lambda 表达式的调用者,即 forEach 循环
        if (it == 3) return@lit
        print(it)
    }
    print(" done with explicit label")
}
fun foo() {
    listOf(1, 2, 3, 4, 5).forEach {
        if (it == 3) return@forEach // 局部返回到该 lambda 表达式的调用者,即 forEach 循环
        print(it)
    }
    print(" done with implicit label")
}
fun foo() {
    listOf(1, 2, 3, 4, 5).forEach(fun(value: Int) {
        if (value == 3) return  // 局部返回到匿名函数的调用者,即 forEach 循环
        print(value)
    })
    print(" done with anonymous function")
}
fun foo() {
    run loop@{
        listOf(1, 2, 3, 4, 5).forEach {
            if (it == 3) return@loop // 从传入 run 的 lambda 表达式非局部返回
            print(it)
        }
    }
    print(" done with nested loop")
}
return@a 1

文章来自Kotlin官方手册

上一篇下一篇

猜你喜欢

热点阅读