added example of compiler issue; unable to create 'size' and 'empty' properties on Collection<T> and java.util.Map<T> it seems? wonder if its a qualified name issue - qualified names don't seem to be allowed on extension properties - will raise an issue...
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
package std.util
|
||||
|
||||
import java.util.*
|
||||
|
||||
// Map APIs
|
||||
|
||||
/** Returns the size of the map */
|
||||
/* TODO get redeclaration errors
|
||||
val Map<*,*>.size : Int
|
||||
get() = size()
|
||||
*/
|
||||
|
||||
/** Returns true if this map is empty */
|
||||
/* TODO get redeclaration errors
|
||||
val Map<*,*>.empty : Boolean
|
||||
get() = isEmpty()
|
||||
*/
|
||||
|
||||
/** Returns the value for the given key or returns the result of the defaultValue function if there was no entry for the given key */
|
||||
inline fun <K,V> java.util.Map<K,V>.getOrElse(key: K, defaultValue: ()-> V) : V {
|
||||
val current = this.get(key)
|
||||
if (current != null) {
|
||||
return current
|
||||
} else {
|
||||
return defaultValue()
|
||||
}
|
||||
}
|
||||
|
||||
/** Returns the value for the given key or the result of the defaultValue function is put into the map for the given value and returned */
|
||||
inline fun <K,V> java.util.Map<K,V>.getOrElseUpdate(key: K, defaultValue: ()-> V) : V {
|
||||
val current = this.get(key)
|
||||
if (current != null) {
|
||||
return current
|
||||
} else {
|
||||
val answer = defaultValue()
|
||||
this.put(key, answer)
|
||||
return answer
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user