Для чего нужен inline

«Для чего нужен inline» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

inline в Kotlin используется для оптимизации производительности, уменьшая накладные расходы на вызовы функций. Когда функция помечена как inline, её тело встраивается в место вызова во время компиляции, избегая создания объекта функции. Особенно полезно для функций высшего порядка (принимающих лямбды), так как уменьшает аллокацию объектов.

Пример:

inline fun measureTime(block: () -> Unit) {
    val start = System.currentTimeMillis()
    block()
    println("Time: ${System.currentTimeMillis() - start}ms")
}

// При компиляции тело функции заменит вызов
measureTime { /* какой-то код */ }

Ограничения:

  • Нельзя использовать inline для рекурсивных функций.
  • Лямбды внутри inline-функций не могут быть сохранены в переменные (из-за встраивания). Для этого есть noinline.