Kotlin 迴圈

weixin_34236869發表於2018-06-01

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

相關文章