- 开发环境:IntelliJ IEDA
- 个人博客:http://blog.csdn.net/IInmy
- 项目源码:https://github.com/Rushro2m/KotlinForOfficial
- 官方文档中文版:https://www.kotlincn.net/docs/reference/returns.html
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)
}