Ответ
inline в Kotlin используется для оптимизации производительности, уменьшая накладные расходы на вызовы функций. Когда функция помечена как inline, её тело встраивается в место вызова во время компиляции, избегая создания объекта функции. Особенно полезно для функций высшего порядка (принимающих лямбды), так как уменьшает аллокацию объектов.
Пример:
inline fun measureTime(block: () -> Unit) {
val start = System.currentTimeMillis()
block()
println("Time: ${System.currentTimeMillis() - start}ms")
}
// При компиляции тело функции заменит вызов
measureTime { /* какой-то код */ }
Ограничения:
- Нельзя использовать
inlineдля рекурсивных функций. - Лямбды внутри
inline-функций не могут быть сохранены в переменные (из-за встраивания). Для этого естьnoinline.