Kotlin学习我爱编程

Kotlin 循环

2018-06-01  本文已影响0人  GexYY

For循环

//遍历数据
 val items = listOf("aaa", "bbb", "ccc")
 for (item in items) {
        println(item)
  }
输出结果 aaa,bbb,ccc

//包含最后一位边界
 for (i in 1..5) {
    print("$i ")
  }
输出结果 1,2,3,4,5

//不包含最后一位边界
for (i in 1 until 5) {
    print("$i ")
  }
输出结果 1,2,3,4

//每隔n个值输出获取
 for (i in 1..10 step 2) {
    print("$i ")
  }
输出结果 1,3,5,7,9

for (i in 10 downTo 6) {
    print("$i ")
  }
输出结果: 10,9,8,7,6

gex@ for (i in 1..10 step 2) {
            LogUtils.e("gex", "gex ->: $i")
            km@ for (j in 1..4) {
                LogUtils.e("gex", "km ->: $j")
                when {
                    j == 2 -> {
                        continue@km
                    }
                    i == 3 -> {
                        break@gex
                    }
                }
            }
        }
输出结果:
   gex ->: 1
    km ->: 1
    km ->: 2
    km ->: 3
    km ->: 4
    gex ->: 3
    km ->: 1

ForEach 循环

正常return,会直接用在整个方法上,forEach中return之后,以后的代码都不会执行,如下:

fun test() {
 var ins = arrayOf(1, 2, 3, 4)
        ins.forEach {
            if (it == 2) return
            LogUtils.e("gex", "gex -> : $it")
        }

        ins.forEach(fun(i: Int) {
            if (i == 2) return
            LogUtils.e("gex", "km -> : $i")
        })
}
输出结果: gex -> : 1

return @tag标签 ,相当于跳过continue的作用,如下:


fun test() {
        var ins = arrayOf(1, 2, 3, 4)
        ins.forEach {
            if (it == 2) return@forEach
            LogUtils.e("gex", "gex -> : $it")
        }
        // forEach()传入方法体,然后方法体中return,效果类似于上边的retuan@Each的效果,都是等同于continue跳过的作用
        ins.forEach(fun(i: Int) {
            if (i == 2) return
            LogUtils.e("gex", "km -> : $i")
        })
    }
输出结果:
    gex -> : 1
    gex -> : 3
    gex -> : 4
    km -> : 1
    km -> : 3
    km -> : 4

//forEach传入方法break方法
fun test() {
        var ins = arrayOf(1, 2, 3, 4)
        ins.forEach {
            if (it == 2) return@forEach
            LogUtils.e("gex", "gex -> : $it")
        }

        run out@{
            ins.forEach (fun(i: Int) {
                if(i==2)return@out
                LogUtils.e("gex", "km -> : $i")
            })
        }
    }
输出结果:
    gex -> : 1
    gex -> : 3
    gex -> : 4
    km -> : 1
上一篇下一篇

猜你喜欢

热点阅读