Kotlin系列实用函数有几个标准库函数,用于Kotlin范围。 这些实用函数如下:
rangeTo()
downTo()
reversed()
step()
rangeTo()
函数用于以范围中提到的递增顺序从开始到结束返回值。 rangeTo()
函数是调用Range
类构造函数的整数类型。
rangeTo()函数的示例
fun main(args: Array<String>) { var range: IntRange = 1.rangeTo(5) println("Printing value: 1.rangeTo(5)") for (x in range){ print("$x ") } println("") var range2: IntRange = IntRange(1,5) println("Printing value: IntRange(1,5)") for (x in range2){ print("$x ") } }
执行上面示例代码,得到以下结果 -
Printing value: 1.rangeTo(5) 1 2 3 4 5 Printing value: IntRange(1,5) 1 2 3 4 5
浮点(如Double
,Float
)数据类型(或类型)未在rangeTo
运算符中定义。
downTo()
扩展函数用于以递减顺序从高阶到低阶返回值。 downTo()
函数是为整数类型定义的。
语法:
fun Long.downTo(other: Int): LongProgression { return LongProgression.fromClosedRange(this, other.toLong(), -1L) } fun Byte.downTo(other: Int): IntProgression { return IntProgression.fromClosedRange(this.toInt(), other, -1) }
downTo()函数的示例
fun main(args: Array<String>) { println("Range 1") var range1 = 5 downTo 1 for (x in range1){ print("$x ") } println() println("Range 2") var range2: IntProgression = 5.downTo(1) for (x in range2){ print("$x ") } println() println("Range 3") var range3: IntProgression = IntProgression.fromClosedRange(5,1,-1) for (x in range3){ print("$x ") } }
执行上面示例代码,得到以下结果 -
Range 1 5 4 3 2 1 Range 2 5 4 3 2 1 Range 3 5 4 3 2 1
reversed()
函数用于反转返回给定范围类型的顺序。
语法:
fun IntProgression.reversed(): IntProgression { return IntProgression.fromClosedRange(last, first, -step) }
reverse()函数的示例
fun main(args: Array<String>) { println("Reversed 1") var range1 = 1..5 for (x in range1.reversed()){ print("$x ") } println() println("Reversed 2") var range2: IntRange = IntRange(1,5) for (x in range2.reversed()){ print("$x ") } println() println("Reversed 3") var range3 = IntProgression.fromClosedRange(5,1,-1) for (x in range3.reversed()){ print("$x ") } println() println("Reversed 4") var range4: IntProgression = IntProgression.fromClosedRange(5,1,-2) for (x in range4.reversed()){ print("$x ") } }
执行上面示例代码,得到以下结果 -
Reversed 1 5 4 3 2 1 Reversed 2 5 4 3 2 1 Reversed 3 1 2 3 4 5 Reversed 4 1 3 5
step()
函数(或步长运算符)用于返回按给定间隔步长值的范围值。 步长值始终采用正参数。 负步长值会生成IllegalArgumentException
异常。
step()函数的示例
fun main(args: Array<String>) { val range: IntRange = 1..10 println("使用步长 2 打印范围值:") for(x in range step (2)){ print("$x ") } println("") println("使用步长 3 打印范围值:") for(x in range step 3){ print("$x ") } val first=((range step 2).first) val last=((range step 2).last) println("") println("间隔的第一个值: $first") println("间隔的最后一个值: $last ") }
执行上面示例代码,得到以下结果 -
使用步长 2 打印范围值: 1 3 5 7 9 使用步长 3 打印范围值: 1 4 7 10 间隔的第一个值: 1 间隔的最后一个值: 9
如果使用负整数作为步长值,则会抛出异常。
fun main(args: Array<String>) { val range: IntRange = IntRange(1,10) for (x in range step -2){ print("$x ") } }
执行上面示例代码,得到以下结果 -
Exception in thread "main" java.lang.IllegalArgumentException: Step must be positive, was: -2. at kotlin.ranges.RangesKt__RangesKt.checkStepIsPositive(Ranges.kt:130) at kotlin.ranges.RangesKt___RangesKt.step(_Ranges.kt:432) at TestKt.main(Test.kt:63)