Выбор ответа Senior Лямбды, inline и reified обновлено
Зачем нужен noinline
Вопрос
Когда параметр inline-функции помечают noinline?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Когда лямбду надо сохранить или передать как объект. Инлайновая лямбда не существует как объект: её тело просто вставлено в код.
Варианты ответа
- Когда лямбда слишком большая для инлайна
- Когда лямбда содержит non-local
return - Когда лямбду надо сохранить или передать как объектправильный ответ
- Когда функция вызывается из Java-кода
Разбор
Инлайновая лямбда не существует как объект: её тело просто вставлено в код. Поэтому её нельзя положить в переменную или передать дальше в обычную функцию. noinline отключает инлайн для конкретного параметра, и он становится обычным объектом функции. Размер лямбды тут ни при чём, а non-local return в noinline-лямбде как раз запрещён.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.