Kotlin:返回和跳转其实还可以添加标签

一、返回和跳转

  1. Kotlin有三种结构跳转表达式:
  • return:默认从最直接包围它的函数或者匿名函数返回
  • break:终止最直接包含它的循环
  • continue:继续下一次直接包围它的循环
  1. 所有这些表达式都可以用作更大表达式的一部分
//2.return表达式作为返回值,类型为Noting类型
val s = person.name ?: return

二、Break和Continu标签

  1. 在Kotlin中,任何表达式都可以用标签(label)来标记,标签格式位标识符后跟@
  2. 为一个表达式添加标签,只要在其前面加标签即可
  3. 可以使用标签限制break或者continuebreak跳转到标签指定的循环后面的执行点,continue继续标签指定的循环的下一次迭代;
//1,2.为for循环添加标签loop@
loop@ for (i in 1..100) {
    // ……
}
//3.break跳转到@loop标签指定的循环后面的执行点
loop@ for (i in 1..100) {
    for (j in 1..100) {
        if (……) break@loop
    }
}

三、标签处返回

  1. 标签限制的return允许从外层函数返回
  2. 通常情况下使用隐士标签更方便,该标签和接受lambda的函数同名
  3. 可使用匿名函数替代lambda表达式,匿名函数内部return语句将从匿名函数本身返回
  4. 解析器优先选用标签限制的return
//1.return原本从直接包围它的函数foo返回,由于添加了@lit标签则它会从lambda表达式返回
fun foo() {
    ints.forEach lit@ {
        if (it == 0) return@lit
        print(it)
    }
}
//2.forEach为隐士标签,和forEach函数同名
fun foo() {
    ints.forEach {
        if (it == 0) return@forEach
        print(it)
    }
}
//3.匿名函数fun(value:Int)替代lambda表达式,return从该匿名函数返回
fun foo() {
    ints.forEach(fun(value: Int) {
        if (value == 0) return 
        print(value)
    })
}
//4.从标签@a返回1
return@a 1

1.新技术,新未来!尽在1024工场。时刻关注最前沿技术资讯,发布最棒技术博文!(甭客气!尽情的扫描或者长按!)

《Kotlin:返回和跳转其实还可以添加标签》 1024工场服务号

2.加入“Kotlin开发”QQ讨论群,一起学习一起Hi。(甭客气!尽情的扫描或者长按!)

《Kotlin:返回和跳转其实还可以添加标签》 Kotlin开发群

    原文作者:1024工场
    原文地址: https://www.jianshu.com/p/e9ea5b91e152
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞