Spec-Zone.ru › Kotlin 2

withDefault

kotlin-stdlib/kotlin.collections/withDefault

Начиная с 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
}

@JvmName(name = "withDefaultMutable")
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API