Выбор ответа Senior Лямбды, inline и reified обновлено

Зачем нужен noinline

Вопрос

Когда параметр inline-функции помечают noinline?

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

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

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

Коротко

Правильный ответ: Когда лямбду надо сохранить или передать как объект. Инлайновая лямбда не существует как объект: её тело просто вставлено в код.

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

  1. Когда лямбда слишком большая для инлайна
  2. Когда лямбда содержит non-local return
  3. Когда лямбду надо сохранить или передать как объектправильный ответ
  4. Когда функция вызывается из Java-кода

Разбор

Инлайновая лямбда не существует как объект: её тело просто вставлено в код. Поэтому её нельзя положить в переменную или передать дальше в обычную функцию. noinline отключает инлайн для конкретного параметра, и он становится обычным объектом функции. Размер лямбды тут ни при чём, а non-local return в noinline-лямбде как раз запрещён.

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

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