标签:label

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

标签: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

2.6k
Kotlin的继承
Kotlin

Kotlin的继承

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

2.1k
 Kotlin基本语法
Kotlin

Kotlin基本语法

Kotlin基本语法了解Kotlin语言的基本语法。1、包kotlin文件以.kt结尾,编译文件还是如此只不过在文件名后面加上Kt后缀。这一点和Java不同,Java源文件.java,编译后为.class文件。1.1、包定义每个kotlin文件的第一行就用关键字package定义该文件所在的包。例:1.2、导包用到其它kotlin文件需要使用关键字import导入,这一点和Java一样。kotli

2.1k