with Default
Начиная с Kotlin: 1.0
fun <K, V> Map<K, V>.withDefault(defaultValue: (key: K) -> V): Map<K, V>
Возвращает обёртку для этой карты только для чтения с неявным значением по умолчанию, заданным указанной функцией defaultValue.
Это неявное значение по умолчанию используется, когда исходная карта не содержит значения для указанного ключа, а значение извлекается с помощью функции Map.getValue, например, когда свойства делегируются карте.
Если для этой карты уже было задано неявное значение по умолчанию предыдущим вызовом withDefault, этот вызов заменит его.
Примеры
import kotlin.test.*
import java.util.*
fun main() {
//sampleStart
val mapWithDefault = mapOf(1 to "One", 2 to "Two").withDefault { key ->
when {
key == 0 -> "Zero"
key > 0 -> "Positive"
else -> "Negative"
}
}
val actual = (-1..3).associateWith { mapWithDefault.getValue(it) }
println(actual) // {-1=Negative, 0=Zero, 1=One, 2=Two, 3=Positive}
//sampleEnd
}
import kotlin.test.*
import java.util.*
fun main() {
//sampleStart
val mapWithDefault = mapOf(1 to "One", 2 to "Two").withDefault { _ -> "Other" }
println(mapWithDefault.getValue(0)) // Other
val mapWithReplacedDefault = mapWithDefault.withDefault { _ -> "Unknown" }
println(mapWithReplacedDefault.getValue(0)) // Unknown
//sampleEnd
}
fun <K, V> MutableMap<K, V>.withDefault(defaultValue: (key: K) -> V): MutableMap<K, V>
Возвращает обёртку для этой изменяемой карты с неявным значением по умолчанию, заданным указанной функцией defaultValue.
Это неявное значение по умолчанию используется, когда исходная карта не содержит значения для указанного ключа, а значение извлекается с помощью функции Map.getValue, например, когда свойства делегируются карте.
Если для этой карты уже было задано неявное значение по умолчанию предыдущим вызовом withDefault, этот вызов заменит его.
Примеры
import kotlin.test.*
import java.util.*
fun main() {
//sampleStart
val mapWithDefault = mapOf(1 to "One", 2 to "Two").withDefault { key ->
when {
key == 0 -> "Zero"
key > 0 -> "Positive"
else -> "Negative"
}
}
val actual = (-1..3).associateWith { mapWithDefault.getValue(it) }
println(actual) // {-1=Negative, 0=Zero, 1=One, 2=Two, 3=Positive}
//sampleEnd
}
import kotlin.test.*
import java.util.*
fun main() {
//sampleStart
val mapWithDefault = mapOf(1 to "One", 2 to "Two").withDefault { _ -> "Other" }
println(mapWithDefault.getValue(0)) // Other
val mapWithReplacedDefault = mapWithDefault.withDefault { _ -> "Unknown" }
println(mapWithReplacedDefault.getValue(0)) // Unknown
//sampleEnd
}
import kotlin.test.*
import java.util.*
fun main() {
//sampleStart
val mutableMap = mutableMapOf(1 to "One", 2 to "Two")
val mutableMapWithDefault = mutableMap.withDefault { _ -> "Other" }
println(mutableMapWithDefault.getValue(0)) // Other
mutableMapWithDefault[0] = "Zero"
println(mutableMapWithDefault.getValue(0)) // Zero
println(mutableMap.getValue(0)) // Zero
//sampleEnd
}
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/with-default.html