前言

在Java中,使用for语句通过索引遍历数组时,可在for语句中定义临时循环变量,并控制变量的范围和递增,如下示例:

String [] array = new String [] {"One", "Two", "Three", "Four", "Five"};
// 使用索引的方式遍历数组
for (int i = 0; i < array.length; i ++) {
    System.out.println(array[i]);
}

但是在Kotlin中,你会发现,是无法再for语句中定义临时循环变量。但是在Kotlin中有区间表达式可以完美实现这些功能。

val array = listOf("One", "Two", "Three", "Four", "Five")
for (i in 0 .. array.size - 1) {
    println(array[i])
}

以上就是区间的一种(rangeTo),区间表达式通常可以使用in或者!in操作符表示“在”或者“不在”某个区间内。

区间的几种类型

rangeTo区间

rangeTo()区间可以使用两个连续的点..表示,表示在这个区间范围之内,如上面的示例所示,rangeTo()表示的区间是左右闭包的,也就是包含区间声明的所有取值。上面的示例中,数组的索引是0~size-1,区间结尾必须是size-1.

downTo区间

downTorangeTo是一对相互倒置的区间,是从最后往前遍历,同样也是左右闭包的区间

val array = listOf("One", "Two", "Three", "Four", "Five")
for (i in array.size - 1 downTo 0) {
    println(array[i])
}

until区间

until区间表示从区间的开头开始,遇到结尾结束。这是一个左闭右开的区间,until的含义是直到xxx停止,但是不会包含结束条件的值。于是,前面遍历数组的可以写成以下代码:

val array = listOf("One", "Two", "Three", "Four", "Five")
for (i in 0 until array.size) {
    println(array[i])
}

区间遍历的间隔

使用区间进行遍历可以设置编辑间隔,通过step来定义。

val array = listOf("One", "Two", "Three", "Four", "Five")
for (i in 0 until array.size step 2) {
    println(array[i])
}

上面的示例中表示输出数组每隔2的元素,这个等同于java中的

String [] array = new String [] {"One", "Two", "Three", "Four", "Five"};
// 使用索引的方式遍历数组
for (int i = 0; i < array.length; i+2) {
    System.out.println(array[i]);
}
Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐