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