如何使用默认包装?

我想用默认的 MutableMap

 val myMap = mutableMapOf<String, Set<String>>().withDefault { mutableSetOf() } 

但我不能使用getOrImplicitDefault方法,因为withDefault返回MutableMap<String, Set<String>>类型。 此外,我不能MutableMapWithDefaultMutableMapWithDefault接口,因为这是一个私有接口 。

我不能使用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()函数,这实际上起作用。