Выбор ответа Middle Лямбды, inline и reified обновлено
Когда не стоит делать функцию inline
Вопрос
Когда inline скорее вредит?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Для большой функции без лямбд, вызываемой во многих местах. Инлайн копирует тело в каждое место вызова.
Варианты ответа
- Для небольшой функции, принимающей лямбду
- Для большой функции без лямбд, вызываемой во многих местахправильный ответ
- Для функции с
reified-параметром типа - Для функции-обёртки вроде
measureTime { }
Разбор
Инлайн копирует тело в каждое место вызова. Выгода есть только от устранения объекта лямбды и вызова через интерфейс. Если лямбд нет, выгоды почти нет, а байткод раздувается; компилятор выдаёт предупреждение «expected performance impact is insignificant». Для маленьких функций с лямбдами и для reified инлайн как раз уместен (для reified вообще обязателен).
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.