驽马十驾 驽马十驾

驽马十驾,功在不舍

目录
Kotlin系列:for 和 in 的小总结
/  

Kotlin系列:for 和 in 的小总结

开篇

in的用法主要有如下几类

  • 代替 java中的 for
  • 类似between,判定某个值是否在某个区间

案例

案例一

代替传统的 Java中的 for

//结果 1 2 3
fun f1() {
    for (i in 1..3) {
        print("$i ")
    }
}

//结果 1 2
fun f2() {

    for (i in 1 until 3) {
        print("$i ")
    }
}

//结果 5 3 1 等值也是会匹配到的
fun f3() {
    for (i in 5 downTo 1 step 2) {
        print("$i ")
    }
}

上述案例中需要注意的是:

  • in 如果搭配n1 .. n2,那么表示的是i>=n1 && i<=n2,从数学意义上来说是一个闭区间。
  • in 如果搭配n1 until n2,那么标识的前闭后开区间
  • in 如果搭配 n1 downTo n2 ,表示的是递减+闭区间

案例2

不结合 for 使用,也可以标识在某个范围中。

fun inTest() {
    println("a" in listOf("b", "c"))
    println("a" >= "b" && "a" <= "c")
}

其中的in标识的是否就在范围中。
上述的代码2个是等价的,很明显使用in表达的意思更清晰。

案例3

在 kotlin 中,对应 list的遍历有3个常用的知识可以梳理,如下所示:

fun forArrayTest() {
    
    val list = listOf("a", "b", "c")

    //用法1,普通的遍历
    for (s in list) {
        println(s)
    }

    //用法2:遍历索引
    for (i in list.indices) {
        if (i % 2 == 1) {
            println(list[i])
        }
    }

    //用法3: 索引和值一起出现
    for (iv in list.withIndex()) {
        if (iv.index % 2 == 1) {
            println(iv.value)
        }
    }
}
  • 用法1是通过 in遍历数组
  • 用法2是通过list.indices来遍历索引
  • 用法3是通过list.withIndex()来遍历索引和值

结语

上面的东西其实很简单,不过总结一次后,下次使用会更简单吧,哈哈!
对了希望2020年,写博客超过50篇。

骐骥一跃,不能十步。驽马十驾,功在不舍。