标签:label
标签的格式为任何符号后面跟@:
标签@
1、循环标签
将标签用在循环语句中,返回到标签后的语句继续执行。标签语法参考《Kotlin循环语句》。
例:
var i = 0
label@ do {
if (i == 3) {
continue@label
}
println(i++)
} while (i < 5)
//输出:0 1 22、函数返回标签
kotlin的函数可以嵌套,如果内层函数有return返回,那么通常是直接从最外层的函数返回。
fun returnFun() {
var array: ArrayList<Int> = ArrayList<Int>()
array.forEach {
if (it == 1) {
return//将直接从整个returnFun()函数返回
}
}
}2.1、Lambda函数返回
如果想只从内部的Lambda函数返回,可以加上标签:
return@标签
返回到标签处而不是整个函数的返回。
fun returnFun() {
var array: ArrayList<Int> = ArrayList<Int>()
array.forEach {
label@ if (it == 1) {
return@label
}
}
}还可以省去标签,使用隐式标签更方便。 隐式标签就是接收该lambda的函数同名。
fun returnFun() {
var array: ArrayList<Int> = ArrayList<Int>()
array.forEach {
if (it == 1) {
return@forEach
}
}
}2.2、匿名函数返回
从匿名函数中直接return,也是整个函数的return。
fun returnFun() {
var ints: ArrayList<Int> = ArrayList<Int>()
ints.forEach(fun(value: Int) {
if (value == 0) return
})
}在合适的地方加上标签,return@label返回到指定的位置:
fun returnFun() {
var ints: ArrayList<Int> = ArrayList<Int>()
ints.forEach(label@ fun(value: Int) {
if (value == 0) return@label
})
}
