Разбор поведения mutableMapOf в Kotlin

Будет напечатано [0, 1]. Первый plus возвращает новую карту с FirstKey, а второй plus внутри apply создаёт ещё одну карту, результат которой отбрасывается.

Короткий ответ

Что ответить на собеседовании

Будет напечатано [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.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее