Kotlin 范围
Kotlin 范围教程显示了如何在 Kotlin 中使用范围。
范围是定义的下限和上限之间的一系列值。
使用..
运算符或rangeTo()
和downTo()
函数创建 Kotlin 范围。 Kotlin 范围默认为包含范围; 也就是说,1..3
创建一个 1、2、3 值的范围。 两个值之间的距离由步长定义。 默认步骤是 1。
Kotlin 创建范围
以下示例显示了如何在 Kotlin 中创建简单范围。
KotlinRangeCreate.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()
}
该示例创建四个值范围。
for (i in 1..30)
print("$i ")
1..30
创建从 1 到 30 的一系列值,包括边界。 我们使用for
循环遍历该范围。
for (i in 30 downTo 1)
print("$i ")
使用downTo
关键字,我们创建了一系列从 30 降到 1 的值。
for (i in 1.rangeTo(30))
print("$i ")
rangeTo()
函数在定义的边界之间创建一个值范围; 它等效于..
运算符。
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
package com.zetcode
fun main() {
for (c in 'a'..'k')
print("$c ")
println()
for (c in 'k' downTo 'a')
print("$c ")
}
本示例创建两个字母范围的升序和降序。
for (c in 'a'..'k')
print("$c ")
我们创建并打印"a"
到"k"
个字符。
for (c in 'k' downTo 'a')
print("$c ")
我们创建并将"k"
打印为"a"
字符。
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
package com.zetcode
fun main() {
(1..5).forEach(::println)
(1..5).reversed().forEach { e -> print("$e ") }
}
该示例使用forEach()
函数遍历范围。
(1..5).forEach(::println)
使用forEach()
函数,我们可以打印1..5
范围内的所有值。
(1..5).reversed().forEach { e -> print("$e ") }
在这一行中,我们使用reversed()
反转范围,并使用forEach()
遍历该范围。
1
2
3
4
5
5 4 3 2 1
这是输出。
Kotlin 范围迭代器
我们可以使用经典的迭代器在 Kotlin 中循环遍历。
KotlinRangeIterator.kt
package com.zetcode
fun main() {
val chars = ('a'..'f')
val it = chars.iterator()
while (it.hasNext()) {
val e = it.next()
println(e)
}
}
该示例使用迭代器遍历一系列字符。
val chars = ('a'..'f')
val it = chars.iterator()
我们创建一个字符范围和一个从该范围开始的迭代器。
while (it.hasNext()) {
val e = it.next()
println(e)
}
在while
循环中,我们遍历范围的元素。 hasNext()
方法检查范围内是否有下一个元素,next()
方法返回范围内的下一个元素。
a
b
c
d
e
f
这是输出。
Kotlin 范围step
使用step
关键字,我们可以定义范围值之间的步长。
KotlinRangeStep.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
。
for (e in 1..20 step 2) {
print("$e ")
}
for
循环遍历范围的值。 范围具有步骤 2。
println((1..10 step 2).last)
println((1..10 step 3).first)
println((1..10 step 4).step)
Kotlin 范围包含last
,first
和step
属性,这些属性返回最后一个,第一个值和步骤。
1 3 5 7 9 11 13 15 17 19
1 6 11 16
9
1
4
这是输出。
Kotlin 范围过滤器,归约,映射
Kotlin 范围包含过滤,归约和映射操作。
KotlinRangeFilterReduceMap.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)
}
该示例在范围上应用过滤,归约和映射。
val r = rnums.filter { e -> e % 2 == 0 }
使用filter()
函数,我们可以滤除偶数。 偶数可以被二除而无余数。 该操作返回值列表。
val r2 = rnums.reduce { total, next -> next * 2 - 1 }
归约运算将给定表达式应用于每个范围元素以产生单个值。
var r3 = rnums.map { e -> e * 5 }
映射操作将给定操作应用于每个元素。 映射返回修改值的列表。
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
package com.zetcode
fun main() {
val r = (1..10)
println(r.min())
println(r.max())
println(r.sum())
println(r.average())
}
该示例打印范围为1..10
的值的最小值,最大值,总和和平均值。
1
10
55
5.5
这是输出。
在本教程中,我们涵盖了 Kotlin 范围。 您可能也对相关教程感兴趣: Kotlin 正则表达式, Kotlin 变量教程, Kotlin 字符串教程, Kotlin 控制流, 或列出所有 Kotlin 教程。