循环的步长可以通过step
关键字进行设置
在Kotlin中,循环的默认步长为1。如果需要改变步长,可以在循环表达式中使用step
关键字。例如,要从0循环到100,步长为2,可以这样写:
for (i in 0..100 step 2) {
println(i)
}
这段代码会输出0, 2, 4, 6, 8, ..., 直到100 .
使用until
关键字:生成一个左闭右开的区间。
for (i in 0 until 100) {
println(i)
}
这段代码会输出0到99 .
使用..
关键字:生成一个左闭右闭的区间。
for (i in 0..100) {
println(i)
}
这段代码会输出0到100。
使用downTo
关键字:生成一个递减的闭区间。
for (i in 100 downTo 0) {
println(i)
}
这段代码会输出100到0 。
forEach
和forEachIndexed
forEach
和forEachIndexed
都是用于遍历集合的函数,但它们在使用方式和功能上有所不同。
使用方式
-
forEach
:适用于Collection和Map集合,以及数组。它只有一个函数类型的参数,通常使用尾随形式的Lambda表达式。在执行时,forEach
会将集合或数组中的每一个元素传递给Lambda表达式(或其他函数引用)以便执行 。
val strArray = arrayOf("张飞", "关羽", "刘备")
strArray.forEach {
println(it)
}
it
是Lambda表达式中的参数,代表集合中的每个元素 .
-
forEachIndexed
:适用于Collection集合和数组。与forEach
不同,forEachIndexed
可以返回元素的索引。它接收一个接收两个参数的Lambda表达式:索引和元素值。
val strArray = arrayOf("张三", "李四", "王五")
strArray.forEachIndexed { index, value -> println("$index-$value") }
区别
- 功能差异:
forEach
只能遍历元素,无法获取元素的索引;而forEachIndexed
可以同时获取元素的索引和值。 - 使用范围:
forEach
适用于Collection和Map集合以及数组;而forEachIndexed
不适用于Map集合,只适用于Collection集合和数组。