Функция elementAtOrElse
Функция elementAtOrElse
возвращает элемент коллекции
по указанному индексу. Если индекс выходит за границы
коллекции, вместо исключения возвращается результат
выполнения лямбда-функции, переданной вторым параметром.
Работает с массивами Array
, списками List
,
множествами Set
и другими коллекциями,
поддерживающими доступ по индексу.
Синтаксис
inline fun <T> Array<out T>.elementAtOrElse(
index: Int,
defaultValue: (Int) -> T
): T
inline fun <T> Iterable<T>.elementAtOrElse(
index: Int,
defaultValue: (Int) -> T
): T
inline fun <T> List<T>.elementAtOrElse(
index: Int,
defaultValue: (Int) -> T
): T
Пример
Получим элемент массива по существующему индексу:
val arr = arrayOf('a', 'b', 'c', 'd', 'e')
val res = arr.elementAtOrElse(2) { 'x' }
println(res)
Результат выполнения кода:
Char 'c'
Пример
Попробуем получить элемент по несуществующему индексу:
val arr = arrayOf('a', 'b', 'c', 'd', 'e')
val res = arr.elementAtOrElse(10) { 'x' }
println(res)
Результат выполнения кода:
Char 'x'
Пример
Использование с списком чисел:
val numbers = listOf(1, 2, 3, 4, 5)
val res = numbers.elementAtOrElse(3) { it * 10 }
println(res)
Результат выполнения кода:
Int 4
Пример
Использование лямбды с передачей индекса:
val numbers = listOf(1, 2, 3, 4, 5)
val res = numbers.elementAtOrElse(7) { index ->
index * 100
}
println(res)
Результат выполнения кода:
Int 700
Пример
Работа с множеством:
val set = setOf('a', 'b', 'c', 'd', 'e')
val res = set.elementAtOrElse(1) { 'z' }
println(res)
Результат выполнения кода:
Char 'b'
Смотрите также
-
функцию
elementAt
,
которая возвращает элемент по индексу или бросает исключение -
функцию
elementAtOrNull
,
которая возвращает элемент по индексу илиnull
-
функцию
getOrElse
,
которая работает аналогично для мап и других коллекций -
функцию
getOrNull
,
которая возвращает элемент илиnull
при отсутствии