Функция elementAtOrElse

Функция elementAtOrElse возвращает элемент коллекции по указанному индексу. Если индекс выходит за границы коллекции, вместо исключения возвращается результат выполнения лямбда-функции, переданной вторым параметром. Работает с массивами Array, списками List, множествами Set и другими коллекциями, поддерживающими доступ по индексу.

Синтаксис

kotlininline fun <T> Array<out T>.elementAtOrElse(
  index: Int, 
  defaultValue: (Int) -> T
): T
kotlininline fun <T> Iterable<T>.elementAtOrElse(
  index: Int, 
  defaultValue: (Int) -> T
): T
kotlininline fun <T> List<T>.elementAtOrElse(
  index: Int, 
  defaultValue: (Int) -> T
): T

Пример

Получим элемент массива по существующему индексу:

kotlinval arr = arrayOf('a', 'b', 'c', 'd', 'e')
val res = arr.elementAtOrElse(2) { 'x' }
println(res)

Результат выполнения кода:

kotlinChar 'c'

Пример

Попробуем получить элемент по несуществующему индексу:

kotlinval arr = arrayOf('a', 'b', 'c', 'd', 'e')
val res = arr.elementAtOrElse(10) { 'x' }
println(res)

Результат выполнения кода:

kotlinChar 'x'

Пример

Использование с списком чисел:

kotlinval numbers = listOf(1, 2, 3, 4, 5)
val res = numbers.elementAtOrElse(3) { it * 10 }
println(res)

Результат выполнения кода:

kotlinInt 4

Пример

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

kotlinval numbers = listOf(1, 2, 3, 4, 5)
val res = numbers.elementAtOrElse(7) { index -> 
  index * 100 
}
println(res)

Результат выполнения кода:

kotlinInt 700

Пример

Работа с множеством:

kotlinval set = setOf('a', 'b', 'c', 'd', 'e')
val res = set.elementAtOrElse(1) { 'z' }
println(res)

Результат выполнения кода:

kotlinChar 'b'

Смотрите также

  • функцию elementAt,
    которая возвращает элемент по индексу или бросает исключение
  • функцию elementAtOrNull,
    которая возвращает элемент по индексу или null
  • функцию getOrElse,
    которая работает аналогично для мап и других коллекций
  • функцию getOrNull,
    которая возвращает элемент или null при отсутствии