标签:label

QuibblerQuibbler 2020-06-08 约 4 分钟 2036 次阅读

标签:label

标签的格式为任何符号后面跟@:

标签@

1、循环标签

将标签用在循环语句中,返回到标签后的语句继续执行。标签语法参考《Kotlin循环语句》。

例:

var i = 0
    label@ do {
        if (i == 3) {
            continue@label
        }
        println(i++)
    } while (i < 5)
    //输出:0 1 2

2、函数返回标签

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
    })
}

相关推荐

Parcelize:Parcelable 实现生成器
Kotlin

Parcelize:Parcelable 实现生成器

Parcelize:Parcelable 实现生成器Parcelable是安卓开发中常用的序列化方式,之前分享过一个Parcelable序列化插件,方便开发者快速生成代码,提高开发效率。1、Parcelize插件Kotlin官方也推出一个Parcelable自动生成的Gradle插件:Parcelize。1.1、引入插件在项目的build.gradle中添加:id("kotlin-parceliz

3.2k
Kotlin的继承
Kotlin

Kotlin的继承

Kotlin的继承1、超类:Any类似于Java中的Object类,Kotlin也有一个叫Any的超类,是所有类的父类,所有类都默认继承自该类。超类的定义如下,其中定义了三个函数:2、open注意上面的Any类用open修饰,表示该类可以被继承。Kotlin中的类默认都是final的,无法被继承:如果想让类可以被继承,就需要用在定义类的地方用open关键字标识该类可以被继承。3、构造器继承中涉及到

2.7k
Kotlin循环语句
Kotlin

Kotlin循环语句

Kotlin循环语句每门语言都要学一下循环语句,虽然每种语言都有for、while等循环,但总有些各自的特色。1、for循环for循环遍历集合或者数组,使用 in 关键字遍历任何提供迭代器。语法:例:先定义一个数组或集合array:遍历集合array:通常还需要用到索引index,调用集合的withIndex()方法参与循环遍历。例:使用下面的方式遍历for循环,同时获取元素当前索引index和当

2.5k