Ответ
Inline-функции в Kotlin позволяют избежать накладных расходов на вызов функций, подставляя их код напрямую в место вызова. Особенно полезны для лямбда-выражений, так как избегают создания анонимных классов.
Пример:
inline fun measureTime(block: () -> Unit) {
val start = System.currentTimeMillis()
block()
println("Time: ${System.currentTimeMillis() - start}ms")
}
// Вызов
measureTime {
// какой-то код
}
Нюансы:
- Нельзя использовать в inline-функциях non-local returns (return из внешней функции)
- Можно запретить inline для конкретных лямбд с
noinline - Слишком большие inline-функции увеличат размер байткода
- Reified generics работают только с inline