Вспомогательные служебные функции диапазона в Kotlin

Вспомогательные служебные функции диапазона 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) 

Оцените статью