Kotlin学习笔记之 4

作者: super_shanks | 来源:发表于2019-03-12 16:39 被阅读14次

    4.循环控制

    • break和continue标签

      我们在kotlin中,通过xxx@的方式,即任意字符串加@结尾的方式来定义循环标签,一般与for循环结合起来用,比如:

      loop1@ for (i in 1..20) {
                println("i  $i")
      
                loop2@ for (j in 1..10) {
                    println("j  $j")
                    if (j > 5) {
                        break@loop1
                    }
                    loop3@ for (k in 1..5) {
                        println("k  $k")
                        if (k > 2) {
                            continue@loop2
                        }
                    }
                }
      }
      

      我们可以通过具体制定的条件来做break或者是continue

      • repeat方法

        重复执行几次

        repeat(5){ i ->
            println("循环运行第${i+1}次。")
        }
        
        =======等同于
        
        for(int i=0;i<5;i++)
        
    • 标签返回

      我们先来看一段如下的代码

      fun test() {
            var array = arrayListOf(1,2,3)
            array.forEach {
                if(it == 1){
                    return
                }
            }
      }
      

      首先,forEach后面直接跟大括号是个lambda表达式,如果直接在IDE中进行编辑的话,在lambda表达式中,如果直接输入return他会提示你需要直接return还是return@forEach 实际上比较明显了,直接return是跳出整个方法体,而return@forEach只是跳出lambda表达式。

      同样的,我们可以直接在lambda的表达式大括号之前加上xxx@来自定义跳转标签,或者直接不使用lambda,而在forEach后直接添加方法等等,均会有不同的情况。

      fun foo() {
            ints.forEach lit@ {
                if (it == 0) return@lit
                print(it)
            }
      }
      
      fun foo() {
            ints.forEach(fun(value: Int) {
                if (value == 0) return
                print(value)
            })
      }
      

      注意一下,return@a 1表示返回给a@这个lambda表达式1这个值。

    相关文章

      网友评论

        本文标题:Kotlin学习笔记之 4

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