Диапазоны

Последнее обновление: 24.05.2021

Диапазон представляет набор значений или неокторый интервал. Для создания диапазона применяется оператор ..:

val range = 1..5	// диапазон [1, 2, 3, 4, 5]

Этот оператор принимает два значения - границы диапазона, и все элементы между этими значениями (включая их самих) составляют диапазон.

Диапазон необязательно должна представлять числовые данные. Например, это могут быть строки:

val range =  "a".."d"

Оператор .. позволяет создать диапазон по нарастающей, где каждый следующий элемент будет больше предыдущего. С помощью специальной функции downTo можно построить диапазон в обратном порядке:

val range1 =  1..5		// 1 2 3 4 5
val range2 =  5 downTo 1	// 5 4 3 2 1

Еще одна специальная функция step позволяет задать шаг, на который будут изменяться последующие элементы:

val range1 = 1..10 step 2       	// 1 3 5 7 9
val range2 = 10 downTo 1 step 3     // 10 7 4 1

Еще одна функция until позволяет не включать верхнюю границу в диапазон:

val range1 = 1 until 9          // 1 2 3 4 5 6 7 8
val range2 = 1 until 9 step 2   // 1 3 5 7

С помощью специальных операторов можно проверить наличие или отсутствие элементов в диапазоне:

  • in: возвращает true, если объект имеется в диапазоне

  • !in: возвращает true, если объект отсутствует в диапазоне

fun main() {

    val range = 1..5

    var isInRange = 5 in range
    println(isInRange)      // true

    isInRange = 86 in range
    println(isInRange)      // false

    var isNotInRange = 6 !in range
    println(isNotInRange)   // true

    isNotInRange = 3 !in range
    println(isNotInRange)   // false
}

Перебор диапазона

С помощью цикла for можно перебирать диапазон:

val range1 = 5 downTo 1 
for(c in range1) print(c)   // 54321
println()

val range2 = 'a'..'d'
for(c in range2) print(c)   // abcd
println()

for(c in 1..9) print(c)     // 123456789
println()

for(c in 1 until 9) print(c)    // 12345678
println()

for(c in 1..9 step 2) print(c)  // 13579
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850