Kotlin学习(7):返回和跳转
Kotlin中返回和跳转,主要是return、break与continue。
·
- 开发环境: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)
}更多推荐



所有评论(0)