ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# Kotlin 范围 > 原文: [http://zetcode.com/kotlin/ranges/](http://zetcode.com/kotlin/ranges/) Kotlin 范围教程显示了如何在 Kotlin 中使用范围。 范围是定义的下限和上限之间的一系列值。 使用`..`运算符或`rangeTo()`和`downTo()`函数创建 Kotlin 范围。 Kotlin 范围默认为包含范围; 也就是说,`1..3`创建一个 1、2、3 值的范围。 两个值之间的距离由步长定义。 默认步骤是 1。 ## Kotlin 创建范围 以下示例显示了如何在 Kotlin 中创建简单范围。 `KotlinRangeCreate.kt` ```kt package com.zetcode fun main() { for (i in 1..30) print("$i ") println() for (i in 30 downTo 1) print("$i ") println() for (i in 1.rangeTo(30)) print("$i ") println() for (i in 30.downTo(1)) print("$i ") println() } ``` 该示例创建四个值范围。 ```kt for (i in 1..30) print("$i ") ``` `1..30`创建从 1 到 30 的一系列值,包括边界。 我们使用`for`循环遍历该范围。 ```kt for (i in 30 downTo 1) print("$i ") ``` 使用`downTo`关键字,我们创建了一系列从 30 降到 1 的值。 ```kt for (i in 1.rangeTo(30)) print("$i ") ``` `rangeTo()`函数在定义的边界之间创建一个值范围; 它等效于`..`运算符。 ```kt 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 ``` 这是输出。 ## Kotlin 的字符范围 我们可以在 Kotlin 中创建一系列字符。 `KotlinRangeChars.kt` ```kt package com.zetcode fun main() { for (c in 'a'..'k') print("$c ") println() for (c in 'k' downTo 'a') print("$c ") } ``` 本示例创建两个字母范围的升序和降序。 ```kt for (c in 'a'..'k') print("$c ") ``` 我们创建并打印`"a"`到`"k"`个字符。 ```kt for (c in 'k' downTo 'a') print("$c ") ``` 我们创建并将`"k"`打印为`"a"`字符。 ```kt a b c d e f g h i j k k j i h g f e d c b a ``` 这是输出。 ## Kotlin 范围`forEach()` 我们可以使用`forEach()`函数遍历值的范围。 `KotlinRangeForEach.kt` ```kt package com.zetcode fun main() { (1..5).forEach(::println) (1..5).reversed().forEach { e -> print("$e ") } } ``` 该示例使用`forEach()`函数遍历范围。 ```kt (1..5).forEach(::println) ``` 使用`forEach()`函数,我们可以打印`1..5`范围内的所有值。 ```kt (1..5).reversed().forEach { e -> print("$e ") } ``` 在这一行中,我们使用`reversed()`反转范围,并使用`forEach()`遍历该范围。 ```kt 1 2 3 4 5 5 4 3 2 1 ``` 这是输出。 ## Kotlin 范围迭代器 我们可以使用经典的迭代器在 Kotlin 中循环遍历。 `KotlinRangeIterator.kt` ```kt package com.zetcode fun main() { val chars = ('a'..'f') val it = chars.iterator() while (it.hasNext()) { val e = it.next() println(e) } } ``` 该示例使用迭代器遍历一系列字符。 ```kt val chars = ('a'..'f') val it = chars.iterator() ``` 我们创建一个字符范围和一个从该范围开始的迭代器。 ```kt while (it.hasNext()) { val e = it.next() println(e) } ``` 在`while`循环中,我们遍历范围的元素。 `hasNext()`方法检查范围内是否有下一个元素,`next()`方法返回范围内的下一个元素。 ```kt a b c d e f ``` 这是输出。 ## Kotlin 范围`step` 使用`step`关键字,我们可以定义范围值之间的步长。 `KotlinRangeStep.kt` ```kt package com.zetcode fun main() { for (e in 1..20 step 2) { print("$e ") } println() for (e in 1..20 step 5) { print("$e ") } println() println((1..10 step 2).last) println((1..10 step 3).first) println((1..10 step 4).step) println() } ``` 该示例显示了如何在 Kotlin 范围内使用`step`。 ```kt for (e in 1..20 step 2) { print("$e ") } ``` `for`循环遍历范围的值。 范围具有步骤 2。 ```kt println((1..10 step 2).last) println((1..10 step 3).first) println((1..10 step 4).step) ``` Kotlin 范围包含`last`,`first`和`step`属性,这些属性返回最后一个,第一个值和步骤。 ```kt 1 3 5 7 9 11 13 15 17 19 1 6 11 16 9 1 4 ``` 这是输出。 ## Kotlin 范围过滤器,归约,映射 Kotlin 范围包含过滤,归约和映射操作。 `KotlinRangeFilterReduceMap.kt` ```kt package com.zetcode fun main() { val rnums = (1..15) println(rnums) val r = rnums.filter { e -> e % 2 == 0 } println(r) val r2 = rnums.reduce { total, next -> next * 2 - 1 } println(r2) var r3 = rnums.map { e -> e * 5 } println(r3) } ``` 该示例在范围上应用过滤,归约和映射。 ```kt val r = rnums.filter { e -> e % 2 == 0 } ``` 使用`filter()`函数,我们可以滤除偶数。 偶数可以被二除而无余数。 该操作返回值列表。 ```kt val r2 = rnums.reduce { total, next -> next * 2 - 1 } ``` 归约运算将给定表达式应用于每个范围元素以产生单个值。 ```kt var r3 = rnums.map { e -> e * 5 } ``` 映射操作将给定操作应用于每个元素。 映射返回修改值的列表。 ```kt 1..15 [2, 4, 6, 8, 10, 12, 14] 29 [5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75] ``` 这是输出。 ## Kotlin 范围最小,最大,总和,平均值 Kotlin 范围包含预定义的归约运算,包括`min()`,`max()`,`sum()`和`average()` `KotlinRangeMinMaxSumAvg.kt` ```kt package com.zetcode fun main() { val r = (1..10) println(r.min()) println(r.max()) println(r.sum()) println(r.average()) } ``` 该示例打印范围为`1..10`的值的最小值,最大值,总和和平均值。 ```kt 1 10 55 5.5 ``` 这是输出。 在本教程中,我们涵盖了 Kotlin 范围。 您可能也对相关教程感兴趣: [Kotlin 正则表达式](/kotlin/regularexpressions/), [Kotlin 变量教程](/kotlin/variables/), [Kotlin 字符串教程](/kotlin/strings/), [Kotlin 控制流](/kotlin/controlflow/), 或列出[所有 Kotlin 教程](/all/#kotlin)。