Kotlin返回与跳转

作者: 奔跑吧技术人 | 来源:发表于2019-01-28 23:32 被阅读17次

    前言

    • 你还在把Java当成Android官方开发语言吗?Kotlin了解一下!
    • 2017年Google IO大会宣布使用Kotlin作为Android的官方开发语言,相比较与典型的面相对象的JAVA语言,Kotlin作为一种新式的函数式编程语言,也有人称之为Android平台的Swift语言。

    环境以及工具

    Android Studio 3.3

    整体介绍

    Kotlin 有三种结构化跳转表达式

    1. return 默认从最直接包围它的函数或者匿名函数返回。
    2. break 终止最直接包围它的循环。
    3. continue 继续下一次最直接包围它的循环。

    return关键字

     //-----------------------return-------------------------------------
        //默认从最直接包围它的函数或者匿名函数返回
        val a = arrayOf(1, 2, 3, 0, 6)
        fun outer() {
            a.forEach {
                if (it == 0) {
                    return
                }
                print("$it")
            }
        }
        outer()//输出结果-------------------------123-------------------------
        println()
    
        //从 lambda 表达式中返回,我们必须给它加标签并用以限制 return
        fun outer2() {
            a.forEach lit@{
                if (it == 0) {
                    return@lit
                }
                print("$it")
            }
        }
        outer2()//输出结果-------------------------1236-------------------------
        println()
    
        //从 lambda 表达式中返回。通常情况下使用隐式标签更方便。 该标签与接受该 lambda 的函数同名
        fun outer3() {
            a.forEach {
                if (it == 0) {
                    return@forEach
                }
                print("$it")
            }
        }
        outer3()//输出结果-------------------------1236-------------------------
        println()
    
    

    Break关键字

        //-----------------------Break-------------------------------------
        loop@ for (i in 1..5) {
            for (j in 1..5) {
                if (j == 2) {
                    print("$j,")
                    break@loop
                }
            }
        }//输出结果-------------------------2,-------------------------
        println()
    

    Continue关键字

      loop@ for (i in 1..5) {
            for (j in 1..5) {
                if (j == 2) {
                    print("$j,")
                    continue@loop
                }
            }
        }//输出结果-------------------------2,2,2,2,2,-------------------------
        println()
    

    标签处返回

        fun foo() {
            arrayOf(1, 2, 3, 4, 6).forEach {
                if (it == 3) return // 非局部  直接返回到 foo() 的调用者
                print(it)
            }
            print(" done with foo function")
        }
        foo()//输出结果-------------------------12-------------------------
        println()
    
        //匿名函数替代 lambda 表达式
        fun foo4() {
            arrayOf(1, 2, 3, 4, 6).forEach(fun(value: Int) {
                if (value == 3) return // 局部 返回到匿名函数的调用者,即 forEach 循环
                print(value)
            })
            println()
            print("done with foo4 function")
        }
        foo4()
    //    *********************************输出结果*********************************
    //    1246
    //    done with foo4 function
    //    *********************************输出结果*********************************
    
        fun foo2() {
            arrayOf(1, 2, 3, 4, 6).forEach lit@{
                if (it == 3) return@lit // 局部 返回到该 lambda 表达式的调用者,即 forEach 循环
                print(it)
            }
        }
        foo2()//输出结果-------------------------12-------------------------
        println()
    
        fun foo3() {
            run loop@{
                listOf(1, 2, 3, 4, 5).forEach {
                    if (it == 3) return@loop // 从传入 run 的 lambda 表达式非局部返回
                    print(it)
                }
            }
            println()
            println("run 方法执行完毕")
        }
        foo3()
    //    *********************************输出结果*********************************
    //    12
    //    run 方法执行完毕
    //    *********************************输出结果*********************************
    

    源码

    请关注公众号并在后台回复:kotlin

    Kotlin重构系列分享教程

    Kotlin环境搭建
    Kotlin重构初体验之告别FindViewById
    Kotlin基本类型
    Kotlin 控制语句 if when for while

    Kotlin重构如何兼容原先的ButterKnife、EventBus3.1
    当ButterKnife8.8.1碰到AndroidX怎么办
    Githup教程开源项目

    Python爬虫系列分享教程

    Python爬虫之旅之Selenium库的使用
    Python爬虫之旅之豆瓣音乐

    请关注我(分享日常开发)

    相关文章

      网友评论

        本文标题:Kotlin返回与跳转

        本文链接:https://www.haomeiwen.com/subject/seoajqtx.html