Prepare to treat keys mapped to null same way as missing keys in Map extensions: getOrElse, getOrPut, getOrImplicitDefault.

This commit is contained in:
Ilya Gorbunov
2015-12-17 07:52:41 +03:00
parent 8b5a194dd6
commit 188119aa83
6 changed files with 60 additions and 9 deletions
+12
View File
@@ -35,3 +35,15 @@ public fun <T> setOf(element: T): Set<T> = hashSetOf(element)
* specified value.
*/
public fun <K, V> mapOf(pair: Pair<K, V>): Map<K, V> = hashMapOf(pair)
public inline fun <K, V> MutableMap<K, V>.getOrPut(key: K, defaultValue: () -> V): V {
val value = get(key)
return if (value == null && !containsKey(key)) {
val answer = defaultValue()
put(key, answer)
answer
} else {
value as V
}
}