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

Когда не стоит делать функцию inline

Вопрос

Когда inline скорее вредит?

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

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

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

Коротко

Правильный ответ: Для большой функции без лямбд, вызываемой во многих местах. Инлайн копирует тело в каждое место вызова.

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

  1. Для небольшой функции, принимающей лямбду
  2. Для большой функции без лямбд, вызываемой во многих местахправильный ответ
  3. Для функции с reified-параметром типа
  4. Для функции-обёртки вроде measureTime { }

Разбор

Инлайн копирует тело в каждое место вызова. Выгода есть только от устранения объекта лямбды и вызова через интерфейс. Если лямбд нет, выгоды почти нет, а байткод раздувается; компилятор выдаёт предупреждение «expected performance impact is insignificant». Для маленьких функций с лямбдами и для reified инлайн как раз уместен (для reified вообще обязателен).

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

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