从Map :: getOrElse返回的Kotlin mutableList()不公开add()
我有
data class Person(var name: String, var hobbies: List<String>) val people = mutableListOf( Person("joe", asList("biking", "baking")), Person("jane", asList("baking")), Person("jack", asList("painting")) ) val map = mutableMapOf<String, List<String>>() for ((name, hobbies) in people) { for (hobby in hobbies) { var peopleWithThisHobby = map.getOrElse(hobby, { mutableListOf() }) peopleWithThisHobby.plus(name) map[hobby] = peopleWithThisHobby } } println(map)
在线peopleWithThisHobby.plus(name)
,IntelliJ自动完成不给我的add()
方法。
我不得不使用:
var peopleWithThisHobby = map.getOrElse(hobby, { mutableListOf() }) peopleWithThisHobby = peopleWithThisHobby.plus(name) map[hobby] = peopleWithThisHobby
是什么赋予了? 这是由设计? 从getOrElse
调用中返回的mutableList()
发生了什么?
我正在使用Kotlin插件版本:1.1.3-eap-85-IJ2017.2-1
那是因为你的地图定义有一个List
而不是MutableList
作为值。 将其更改为MutableList
,它将工作。
val map = mutableMapOf<String, List<String>>()
将上面的内容更改为:
val map = mutableMapOf<String, MutableList<String>>()
- Android Studio在构建Kotlin项目时报告“无法识别启动活动:找不到默认活动”
- Kotlin:通过Kotlin中的Data类在Java类中设置一个私有布尔值。 为什么我无法做到这一点?
- 我怎样才能引用从Java的伴侣对象?
- Android Gradle 3.0和本地库的“Unresolved reference R”
- Kotlin Android扩展和菜单
- 为什么我的RxJava设置阻止我的UI线程? 使用BluetoothAdapter.startLeScan回调
- 如何获得kotlin函数的调用者
- 当lateinit var被初始化时通知(Kotlin)
- 在Kotlin中,我如何习惯性地访问可空的嵌套地图值,或者返回一个默认值?