getOrPut所在位置是kotlin.collections.getOrPut,其相關用法介紹如下。

用法:

inline fun <K, V> MutableMap<K, V>.getOrPut(
    key: K, 
    defaultValue: () -> V
): V

返回給定鍵的值。如果在映射中找不到鍵,則調用defaultValue 函數,將其結果放入映射中給定鍵下並返回。

請注意,如果同時修改映射,則不能保證操作是原子的。

例子:

import kotlin.test.*
import java.util.*

fun main(args: Array<String>) {
//sampleStart
val map = mutableMapOf<String, Int?>()

println(map.getOrPut("x") { 2 }) // 2
// subsequent calls to getOrPut do not evaluate the default value
// since the first getOrPut has already stored value 2 in the map
println(map.getOrPut("x") { 3 }) // 2

// however null value mapped to a key is treated the same as the missing value
println(map.getOrPut("y") { null }) // null
// so in that case the default value is evaluated
println(map.getOrPut("y") { 42 }) // 42
//sampleEnd
}

輸出:

2
2
null
42