和java类似,Kotlin中有3中跳转语句
- return
- break
- continue
break和continue标签
我们可以给任何表达式起一个别名,kotlin称这个为标签。
拿之前的for循环语句举例
doctorq@for (index in array.indices) {
println(index)
}
我给这个for循环加了个标签,标签以@为后缀
doctorq@ for (i in 1..100) {
doctorq2@ for (j in 1..100) {
if (i > j) break@doctorq2
if (i == 50) break@doctorq
}
}
标签的作用,可以使得跳转到的位置十分明确,不用再纠结在嵌套for循环中,有跳转到哪里的疑惑。而且也可以随意选择跳转到什么地方,比java的for循环方便多了。
return上的标签
在一些嵌套函数中,需要return返回一个值给外部的函数,这个时候就需要用到标签。特别是在lambda表达式中返回:
fun foo() {
ints.forEach {
if (it == 0) return
print(it)
}
}
上面的forEach语句,遇到0后,会直接返回。
如果想遇到0跳过,继续遍历下一个元素,这个时候无法使用continue
。
fun foo(array:Array<Int>) {
array.forEach doctorq@{
if (it == 0) return@doctorq
println(it)
}
}
也可以使用forEach
作为标签名字
fun foo() {
ints.forEach {
if (it == 0) return@forEach
print(it)
}
}
我们也可以使用匿名函数代替lambda表达式,匿名函数中的return返回到匿名函数本身。