Выбор ответа Middle Лямбды, inline и reified спрашивают часто обновлено

return внутри forEach

Вопрос

Что выведет код?

fun main() {
    listOf(1, 2, 3, 4, 5).forEach {
        if (it == 3) return
        print("$it ")
    }
    print("end")
}

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: 1 2. forEach это inline-функция, поэтому return в её лямбде выходит из всей внешней функции main.

Варианты ответа

  1. 1 2 end
  2. 1 2 4 5 end
  3. 1 2правильный ответ
  4. 1 2 4 5

Разбор

forEach это inline-функция, поэтому return в её лямбде выходит из всей внешней функции main. После вывода 1 и 2 встречается 3, и main завершается, end не печатается. Чтобы пропустить только текущий элемент, нужен return@forEach, тогда вывод был бы 1 2 4 5 end.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.