Kotlin的for关键字
最后修改于 2025 年 4 月 19 日
Kotlin的for循环提供了一种简洁的方式来迭代范围、数组、集合和其他可迭代对象。 for
关键字是循环操作的核心。 本教程通过实际例子深入探讨了 for
关键字。
基本定义
Kotlin中的 for
关键字用于迭代。 它适用于任何提供迭代器的对象。 与某些语言不同,Kotlin的for循环始终用于在范围或集合上进行迭代。
迭代一个范围
for
的最简单用法是迭代一个数字范围。 Kotlin 提供了 ..
运算符来创建可在for循环中使用的范围。
package com.zetcode fun main() { for (i in 1..5) { println(i) } }
此示例打印从 1 到 5 的数字。 1..5
创建一个包含范围。 循环变量 i
依次取范围内的每个值。 这是Kotlin中最基本的for循环形式。
使用步长迭代一个范围
Kotlin允许在迭代范围时指定步长值。 这控制了迭代中连续值之间的增量。
package com.zetcode fun main() { for (i in 1..10 step 2) { println(i) } }
在这里,我们打印 1 到 10 之间的奇数。 step 2
修饰符使循环以 2 而不是 1 为增量。 当您需要在迭代期间跳过元素时,这很有用。
迭代一个数组
for
循环可以迭代数组和其他集合。 语法与范围相同,使其在不同的可迭代类型中保持一致。
package com.zetcode fun main() { val fruits = arrayOf("Apple", "Banana", "Cherry") for (fruit in fruits) { println(fruit) } }
此示例迭代一个字符串数组。 循环变量 fruit
依次取每个数组元素。 相同的语法适用于列表、集合和其他集合类型。
使用索引迭代
有时您需要在迭代过程中同时获取元素及其索引。 Kotlin为此提供了 withIndex
函数。
package com.zetcode fun main() { val colors = listOf("Red", "Green", "Blue") for ((index, color) in colors.withIndex()) { println("$index: $color") } }
在这里,我们使用解构来在每次迭代中获取索引和值。 withIndex
函数返回一个索引-值对的可迭代对象。 这比手动管理计数器变量更清晰。
迭代一个Map
可以使用 for
循环迭代Map,并使用解构来访问键和值。 Kotlin 提供了几种迭代map条目的方法。
package com.zetcode fun main() { val map = mapOf(1 to "One", 2 to "Two", 3 to "Three") for ((key, value) in map) { println("$key = $value") } }
此示例演示了使用解构的map迭代。 每个map条目都被分解为 key
和 value
组件。 相同的语法适用于可变和不可变map。
迭代一个字符串
字符串在Kotlin中是可迭代的,允许您使用 for
循环处理字符串中的每个字符。 这对于逐字符处理很有用。
package com.zetcode fun main() { val text = "Kotlin" for (ch in text) { println(ch) } }
在这里,我们迭代字符串“Kotlin”中的每个字符。 循环变量 ch
依次取每个字符。 这种方法比使用传统的索引访问更清晰。
自定义迭代器
您可以通过实现 Iterator
接口使任何类可迭代。 这允许您的自定义类型与 for
循环一起使用。
package com.zetcode class Countdown(val start: Int) : Iterable<Int> { override fun iterator(): Iterator<Int> { return object : Iterator<Int> { var current = start override fun hasNext() = current > 0 override fun next() = current-- } } } fun main() { for (i in Countdown(5)) { println(i) } }
此示例创建一个自定义倒计时迭代器。 Countdown
类实现了 Iterable
,允许它在for循环中使用。 循环打印从 5 到 1 的数字。
For循环的最佳实践
- 首选 for 而不是 while: 当迭代次数已知或从集合派生时,使用 for。
- 使用有意义的名称: 为循环变量选择描述性名称以提高可读性。
- 利用解构: 当您需要索引和值或键和值时,使用解构。
- 考虑函数式替代方案: 对于简单的转换,请考虑使用
forEach
或其他集合函数。 - 优化范围: 适当使用
until
用于独占范围,使用downTo
用于降序迭代。
来源
本教程深入介绍了Kotlin的 for
关键字,展示了各种迭代场景,包括范围、集合和自定义迭代器。 for循环是一个基本结构,它使Kotlin中的迭代简洁易读。
作者
列出 所有 Kotlin 教程。