Kotlin范围定义为从起始值到结束值的间隔。 范围表达式使用运算符(..
)创建,并由in
和!in
补充。 等于或大于起始值且小于或等于结束值的值在定义的范围内。
val aToZ = 'a'..'z' val oneToNine = 1..9
在上述代码:val aToZ ='a'..'z'
,表示a
包含在aToZ
中,b
包含在aToZ
中,依此类推。 代码val oneToNine = 1..9
表示1
包含在oneToNine
中,但oneToNine
中不包含10
。
整数类型范围(IntRange
,LongRange
,CharRange
)是用于for
循环。 编译器以简单的Java索引for
循环模拟转换此整数类型。
Kotlin范围的例子
fun main(args: Array<String>) { for (a in 1..5){ print(a ) } println() for(x in 'a'..'f'){ print(x ) } println() val range = 1.0..5.0 println(range) println("3.14 in range is ${3.14 in range}") }
执行上面示例代码,得到以下结果 -
12345 abcdef 1.0..5.0 3.14 in range is true
当尝试使用递减顺序迭代r
范围时发生了什么?..
运算符将不打印任何内容。
for (a in 5..1){ print(a )// print nothing }
要按降序迭代元素,请使用标准库downTo()
函数或downTo
关键字。
for (a in 5 downTo 1){ print(a )// 54321 }
until范围
until()
函数或until
范围中的关键字用于排除最后一个元素。 它迭代范围从开始到结束时少于1
。
for (a in 1 until 5){ print(a) // print 1234 }
以上范围不包括5
,它是从1
到4
迭代。
下面来看看如何使用downTo()
,downTo
和rangeTo()
方法的整数范围的示例。
fun main(args: Array<String>) { for (x in 1..5) print(x) println() for (x in 5 downTo 1) print(x) println() for (x in 1.rangeTo(5)) print(x) println() for (x in 5.downTo(1)) print(x) println() }
执行上面示例代码,得到以下结果 -
12345 54321 12345 54321
使用char
数据类型的Kotlin
范围示例。
fun main(args: Array<String>) { for(x in 'a'..'e') print("$x ") println() for (x in 'e' downTo 'a') print("$x ") }
执行上面示例代码,得到以下结果 -
a b c d e e d c b a
范围内的Kotlin step
关键字用于在给定步长值(int
类型)的区间内迭代范围。
fun main(args: Array<String>) { for (x in 1..10 step 2) print("$x ") println() for (x in 10 downTo 1 step 3) print("$x ") }
执行上面示例代码,得到以下结果 -
1 3 5 7 9 10 7 4 1
iterator()
方法也可用于迭代范围值。 它使用hasNext()
方法检查范围中的下一个元素,next()
方法返回范围的下一个元素。
fun main(args: Array<String>) { val chars = ('a'..'e') val it = chars.iterator() while (it.hasNext()) { val x = it.next() print("$x ") } }
执行上面示例代码,得到以下结果 -
a b c d e