📅  最后修改于: 2021-01-05 08:06:56             🧑  作者: Mango
Kotlin范围定义为从开始值到结束值的间隔。使用运算符(..)创建范围表达式,并用in和!in进行补充。等于或大于起始值且小于或等于终止值的值在定义的范围内。
val aToZ = 'a'..'z'
val oneToNine = 1..9
在评估上述代码时, val aToZ ='a'..'z',因为aToZ中的'a'返回true,aToZ中的'b'返回true,依此类推。代码val oneToNine = 1..9在oneToNine中评估为1会返回true ,但在oneToNine中评估10会返回false 。
整数类型范围(IntRange,LongRange,CharRange)是用于for循环的功能。编译器以Java索引for-loop的简单模拟形式转换此整数类型。
fun main(args: Array) {
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
当我们尝试使用降序迭代ar范围时发生了什么。 。运算符?这将不print任何内容。
for (a in 5..1){
print(a )// print nothing
}
要按降序迭代元素,请使用标准库downTo()函数或downTo关键字。
for (a in 5 downTo 1){
print(a )// 54321
}
范围中的直到()函数或直到关键字用于排除最后一个元素。迭代范围是从开始到小于结束的1。
for (a in 1 until 5){
print(a ) // print 1234
}
以上范围排除5,并从1到4进行迭代。
让我们看一个使用downTo() , downTo和rangeTo()方法的整数范围示例。
fun main(args: Array) {
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) {
for (x in 'a'..'e')
print("$x ")
println()
for (x in 'e' downTo 'a')
print("$x ")
}
输出:
a bcde
edcba
range中的Kotlin step关键字用于在给定step值(int值)的间隔内迭代范围。
fun main(args: Array) {
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) {
val chars = ('a'..'e')
val it = chars.iterator()
while (it.hasNext()) {
val x = it.next()
print("$x ")
}
}
输出:
a b c d e