Kotlin mutableList () возвращается с карты :: getOrElse не выставляет 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 auto complete не дает мне метод add() .

Я должен вместо этого использовать:

 var peopleWithThisHobby = map.getOrElse(hobby, { mutableListOf() }) peopleWithThisHobby = peopleWithThisHobby.plus(name) map[hobby] = peopleWithThisHobby 

Что дает? Это по дизайну? Что происходит с mutableList() из вызова getOrElse ?

Я использую версию плагина Kotlin: 1.1.3-eap-85-IJ2017.2-1

Это потому, что в вашем определении карты есть List вместо MutableList как значение. Измените его на MutableList и он сработает.

 val map = mutableMapOf<String, List<String>>() 

Измените значение выше:

 val map = mutableMapOf<String, MutableList<String>>()