Bootstrap

kotlin 的循环

循环的步长可以通过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‌ 。

forEachforEachIndexed

forEachforEachIndexed都是用于遍历集合的函数,但它们在使用方式和功能上有所不同。

使用方式

  • forEach‌:适用于CollectionMap集合,以及数组。它只有一个函数类型的参数,通常使用尾随形式的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集合和数组‌。

;