Функция getValue

Функция getValue предоставляет безопасный способ получения значения из коллекции по ключу. Она работает с типами Map, MutableMap, List, Array и другими коллекциями, поддерживающими доступ по индексу или ключу. Основное преимущество функции - гарантия того, что значение существует в коллекции, иначе будет выброшено исключение NoSuchElementException.

Импорт

kotlinimport kotlin.collections.getValue

Синтаксис

kotlin// Для Map и MutableMap
operator fun <K, V> Map<K, V>.getValue(thisRef: Any?, property: KProperty<*>): V

// Для List и Array
operator fun <T> List<T>.getValue(thisRef: Any?, property: KProperty<*>): T
operator fun <T> Array<T>.getValue(thisRef: Any?, property: KProperty<*>): T

Пример

Использование с Map для безопасного получения значения:

kotlinval map = mapOf("a" to 1, "b" to 2, "c" to 3)
val value: Int = map.getValue("b")
println(value)

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

kotlinInt 2

Пример

Использование с List для безопасного получения элемента по индексу:

kotlinval list = listOf(10, 20, 30, 40, 50)
val element: Int = list.getValue(2)
println(element)

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

kotlinInt 30

Пример

Использование с Array для безопасного получения элемента:

kotlinval array = arrayOf('a', 'b', 'c', 'd', 'e')
val char: Char = array.getValue(3)
println(char)

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

kotlinChar 'd'

Пример

Генерация исключения при отсутствии ключа в Map:

kotlinval map = mapOf("x" to 100, "y" to 200)

try {
  val result = map.getValue("z")
  println(result)
} catch (e: NoSuchElementException) {
  println("Key not found: ${e.message}")
}

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

kotlinKey not found: Key z is missing in the map.

Пример

Использование с делегированными свойствами:

kotlinval config = mapOf("timeout" to 5000, "retries" to 3)

class Connection {
  val timeout by config
  val retries by config
}

val conn = Connection()
println("Timeout: ${conn.timeout}, Retries: ${conn.retries}")

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

kotlinTimeout: 5000, Retries: 3

Поддерживаемые типы коллекций

Функция getValue работает со следующими типами коллекций:

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

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