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