Функция getOrElse
Функция getOrElse позволяет безопасно получать элементы
из коллекций по индексу или ключу. Если элемент не существует,
функция возвращает результат вычисления лямбда-выражения,
переданного в качестве второго параметра. Функция работает
с массивами Array, списками List, множествами
Set и отображениями Map.
Синтаксис
// Для массивов, списков и множеств
inline fun <T> Array<out T>.getOrElse(
index: Int,
defaultValue: (Int) -> T
): T
inline fun <T> List<T>.getOrElse(
index: Int,
defaultValue: (Int) -> T
): T
inline fun <T> Set<T>.getOrElse(
index: Int,
defaultValue: (Int) -> T
): T
// Для отображений (Map)
inline fun <K, V> Map<K, V>.getOrElse(
key: K,
defaultValue: () -> V
): V
Пример
Получение элемента массива по существующему индексу:
val arr = arrayOf('a', 'b', 'c', 'd', 'e')
val res = arr.getOrElse(2) { 'z' }
println(res)
Результат выполнения кода:
Char 'c'
Пример
Получение элемента массива по несуществующему индексу:
val arr = arrayOf('a', 'b', 'c', 'd', 'e')
val res = arr.getOrElse(10) { 'z' }
println(res)
Результат выполнения кода:
Char 'z'
Пример
Использование с списками List:
val list = listOf(1, 2, 3, 4, 5)
val res = list.getOrElse(3) { -1 }
println(res)
Результат выполнения кода:
Int 4
Пример
Использование с отображениями Map:
val map = mapOf("a" to 1, "b" to 2, "c" to 3)
val res = map.getOrElse("b") { 0 }
println(res)
Результат выполнения кода:
Int 2
Пример
Получение элемента отображения по несуществующему ключу:
val map = mapOf("a" to 1, "b" to 2, "c" to 3)
val res = map.getOrElse("x") { 0 }
println(res)
Результат выполнения кода:
Int 0
Пример
Использование индекса в лямбда-выражении для возврата значения по умолчанию:
val arr = arrayOf(10, 20, 30)
val res = arr.getOrElse(5) { index -> index * 10 }
println(res)
Результат выполнения кода:
Int 50
Смотрите также
-
функцию
getOrNull,
которая возвращаетnullесли элемент не найден -
функцию
getOrDefault,
которая возвращает заданное значение по умолчанию -
функцию
elementAtOrElse,
которая аналогичнаgetOrElseдля коллекций -
функцию
elementAtOrNull,
которая возвращаетnullесли элемент не найден