Какой опыт работы с inline-функциями

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

Ответ

Inline-функции в Kotlin позволяют избежать накладных расходов на вызов функций, подставляя их код напрямую в место вызова. Особенно полезны для лямбда-выражений, так как избегают создания анонимных классов.

Пример:

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

// Вызов
measureTime { 
    // какой-то код
}

Нюансы:

  1. Нельзя использовать в inline-функциях non-local returns (return из внешней функции)
  2. Можно запретить inline для конкретных лямбд с noinline
  3. Слишком большие inline-функции увеличат размер байткода
  4. Reified generics работают только с inline