Функция getOrElse

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

Синтаксис

kotlin// Для массивов, списков и множеств
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
kotlin// Для отображений (Map)
inline fun <K, V> Map<K, V>.getOrElse(
  key: K, 
  defaultValue: () -> V
): V

Пример

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

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

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

kotlinChar 'c'

Пример

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

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

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

kotlinChar 'z'

Пример

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

kotlinval list = listOf(1, 2, 3, 4, 5)
val res = list.getOrElse(3) { -1 }
println(res)

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

kotlinInt 4

Пример

Использование с отображениями Map:

kotlinval map = mapOf("a" to 1, "b" to 2, "c" to 3)
val res = map.getOrElse("b") { 0 }
println(res)

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

kotlinInt 2

Пример

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

kotlinval map = mapOf("a" to 1, "b" to 2, "c" to 3)
val res = map.getOrElse("x") { 0 }
println(res)

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

kotlinInt 0

Пример

Использование индекса в лямбда-выражении для возврата значения по умолчанию:

kotlinval arr = arrayOf(10, 20, 30)
val res = arr.getOrElse(5) { index -> index * 10 }
println(res)

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

kotlinInt 50

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

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