Вспомогательные служебные функции диапазона Kotlin имеют несколько стандартных библиотек, которые используются в диапазонах Kotlin. Эти вспомогательные функции следующие:
- rangeTo()
- downTo()
- reversed()
- step()
Kotlin rangeTo()
Функция rangeTo() используется для возврата значения от начала до конца в порядке возрастания, указанного в диапазоне. Функция rangeTo() — это целочисленные типы, которые вызывают конструкторы класса Range.
Пример функции rangeTo():
fun main(args: Array) {
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.
Kotlin downTo()
Функция расширения 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) {
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
Kotlin reversed()
Функция reversed() используется для возврата обратного порядка заданного типа диапазона.
Синтаксис:
fun IntProgression.reversed(): IntProgression {
return IntProgression.fromClosedRange(last, first, -step)
}
Пример функции reverse():
fun main(args: Array) {
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
Kotlin step()
Функция step() (или step оператор) используется для возврата значения диапазона в интервале заданного значения шага. Значение шага всегда принимает положительный параметр. Отрицательное значение шага генерирует исключение IllegalArgumentException.
Пример функции step():
fun main(args: Array) {
val range: IntRange = 1..10
println("Print range value with step 2:")
for(x in range step(2)){
print("$x ")
}
println("")
println("Print range value with step 3:")
for(x in range step 3){
print("$x ")
}
val first=((range step 2).first)
val last=((range step 2).last)
println("")
println("First value of interval: $first")
println("Last value of interval: $last ")
}
Выход:
Print range value with step 2: 1 3 5 7 9 Print range value with step 3: 1 4 7 10 First value of interval: 1 Last value of interval: 9
Если мы указываем значение шага как отрицательное целое число, возникает исключение.
fun main(args: Array) {
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)
