Kotlin学习(7):返回和跳转

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

  • return:默认从最直接包围它的函数或者匿名函数返回。
  • break:终止最直接包围它的循环。
  • continue:继续下一次最直接包围它的循环。

所有的这些表达式都可以用作更大表达式的一部分:

val s = Person("张三").name ?: return
1、Break与Continue标签

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

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

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

2、标签处返回

Kotlin有函数字面量、局部函数和对象表达式。因此Kotlin的函数可以被嵌套。标签限制的return允许我们从外层函数返回。最终的一个用途就是i从Lambda表达式中返回。

fun foo() {
    val ints = listOf(0, 1, 2, 3, 4, 5, 6)
    ints.forEach {
        if (it == 3)
        //从Lambda函数中返回,结束这个循环函数
            return
        print(it)
    }
}

这个return表达式从最直接包围它的函数即foo中返回。如果我们需要从Lambda表达式中返回,我们必须给它加标签并用以限制return

fun fzz() {
    val ints = listOf(0, 1, 2, 3, 4, 5, 6)
    ints.forEach lit@ {
        if (it == 0) return@lit
        print(it)
    }
}

通常情况下使用隐式标签更方便。改标签与该Lambda的函数同名。

fun fxx() {
    val ints = listOf(0, 1, 2, 3, 4, 5, 6)
    ints.forEach {
        if (it == 0) return@forEach
        print(it)
    }
}
3、Continue

continue指的是继续标签指定的循环的下一次迭代,也就是结束本次循环,开始下一次循环。

for (i in 1..10){
        if (i==6)continue
        print(i)
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值