Будет напечатано [0, 1]. Первый plus возвращает новую карту с FirstKey, а второй plus внутри apply создаёт ещё одну карту, результат которой отбрасывается.
Разбор поведения mutableMapOf в Kotlin
Будет напечатано [0, 1]. Первый plus возвращает новую карту с FirstKey, а второй plus внутри apply создаёт ещё одну карту, результат которой отбрасывается.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Определите, какие элементы будут напечатаны после выполнения команды println(sampleMap.values).
val sampleMap = mutableMapOf("ZeroKey" to "0")
.plus(
"FirstKey" to "1",
).apply {
this.plus("SecondKey" to "2")
}
println(sampleMap.values)
Ответ
Будет напечатано [0, 1]. Первый plus возвращает новую карту с FirstKey, а второй plus внутри apply создаёт ещё одну карту, результат которой отбрасывается.
apply возвращает свой receiver и не подменяет его результатом последнего выражения. Методы plus не изменяют исходную MutableMap; для изменения используйте put/оператор присваивания у явно изменяемой карты либо сохраните результат plus. Порядок [0, 1] соответствует порядку добавленных записей в данном примере.
Источник: kotlinlang.org.