如何使用默认包装?
我想用默认的 MutableMap
:
val myMap = mutableMapOf<String, Set<String>>().withDefault { mutableSetOf() }
但我不能使用getOrImplicitDefault
方法,因为withDefault
返回MutableMap<String, Set<String>>
类型。 此外,我不能MutableMapWithDefault
为MutableMapWithDefault
接口,因为这是一个私有接口 。
我不能使用get
方法,因为它返回一个可为空的类型。 这是可以的,因为这是MutableMap
接口上的一个方法(此外,它不会调用defaultValue
回调默认值)。
似乎这个功能在Kotlin中没有正确实现,或者我错误地使用了它。 那么,如何正确使用withDefault
包装呢?
目前,由withDefault
返回的包装只能在属性委托用例中使用。
val map = mutableMapOf<String, Set<String>>().withDefault { mutableSetOf() } var property: Set<String> by map // returns empty set by default
那么, getOrImplicitDefault
所有实现getOrImplicitDefault
将重定向到getOrElseNullable
。 也许尝试一下。
看起来像在Kotlin 1.1中,如果使用getValue()函数而不是get()
函数,这实际上起作用。