Рефакторинг Kotlin‑кода: исправление ошибок и улучшение стиля

Приведённый Kotlin-код уже использует mutableListOf, корректный add и обратный обход. Он выводит 7, 5, 1 и Done!, пропуская только элемент 3.

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

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

Приведённый Kotlin-код уже использует mutableListOf, корректный add и обратный обход. Он выводит 7, 5, 1 и Done!, пропуская только элемент 3.

Подробный разбор

Ответ с пояснениями

Условие

Необходимо переработать приведённый ниже Kotlin‑фрагмент, устранив компиляционные проблемы и сделав логику более понятной. Требуется заменить неизменяемый список на изменяемый, корректно добавить новый элемент, реализовать обход элементов в обратном порядке без лишних синхронизаций и обеспечить правильный вывод.

val numbers = mutableListOf(1, 3, 5)

fun main() {
    numbers.add(7)
    numbers.forEachReversed { value ->
        if (value == 3) return@forEachReversed
        println(value)
    }
    println("Done!")
}

fun <T> List<T>.forEachReversed(action: (T) -> Unit) {
    this.asReversed().forEach { action(it) }
}

Ответ

Приведённый Kotlin-код уже использует mutableListOf, корректный add и обратный обход. Он выводит 7, 5, 1 и Done!, пропуская только элемент 3.

Return@forEachReversed завершает текущий вызов lambda, а не main. AsReversed предоставляет представление исходного списка, не копию и не синхронизацию. Если доступ идёт из разных потоков, безопасность нужно обеспечить отдельно. Для локальной задачи можно перенести numbers внутрь main, чтобы убрать ненужное глобальное состояние.

Источник: kotlinlang.org.

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

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

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

Подробнее