与 Java 和其他语言不同,Kotlin 中没有传统的 for 循环。
在 Kotlin 中,`for` 循环用于迭代范围、数组、映射等(任何提供迭代器的东西)。
Kotlin 中 `for` 循环的语法是:
for (item in collection) { // body of loop }
示例:迭代范围
fun main(args: Array<String>) {
for (i in 1..5) {
println(i)
}
}
在这里,循环迭代范围并打印每个项目。
输出
1 2 3 4 5
如果循环体只包含一个语句(如上面的示例),则不需要使用花括号 `{ }`。
fun main(args: Array<String>) {
for (i in 1..5) println(i)
}
由于范围提供迭代器,因此可以使用 `for` 循环迭代范围。要了解更多信息,请访问Kotlin 迭代器。
示例:迭代范围的不同方式
fun main(args: Array<String>) {
print("for (i in 1..5) print(i) = ")
for (i in 1..5) print(i)
println()
print("for (i in 5..1) print(i) = ")
for (i in 5..1) print(i) // prints nothing
println()
print("for (i in 5 downTo 1) print(i) = ")
for (i in 5 downTo 1) print(i)
println()
print("for (i in 1..5 step 2) print(i) = ")
for (i in 1..5 step 2) print(i)
println()
print("for (i in 5 downTo 1 step 2) print(i) = ")
for (i in 5 downTo 1 step 2) print(i)
}
输出
for (i in 1..5) print(i) = 12345 for (i in 5..1) print(i) = for (i in 5 downTo 1) print(i) = 54321 for (i in 1..5 step 2) print(i) = 135 for (i in 5 downTo 1 step 2) print(i) = 531
迭代数组
这是一个迭代 `String` 数组的示例。
fun main(args: Array<String>) {
var language = arrayOf("Ruby", "Kotlin", "Python" "Java")
for (item in language)
println(item)
}
输出
Ruby
Kotlin
Python
Java
可以通过索引迭代数组。例如:
fun main(args: Array<String>) {
var language = arrayOf("Ruby", "Kotlin", "Python", "Java")
for (item in language.indices) {
// printing array elements having even index only
if (item%2 == 0)
println(language[item])
}
}
输出
Ruby
Python
注意:这里,`language.indices` 返回每个数组元素的全部索引。
如果您想了解更多关于数组的信息,请访问Kotlin 数组。
迭代字符串
fun main(args: Array<String>) {
var text= "Kotlin"
for (letter in text) {
println(letter)
}
}
输出
K o t l i n
与数组类似,您可以通过索引迭代 `String`。例如:
fun main(args: Array<String>) {
var text= "Kotlin"
for (item in text.indices) {
println(text[item])
}
}
输出
K o t l i n
您将在《Kotlin 映射》一文中学习如何使用 `for` 循环迭代映射。