Когда нужно использовать ключевое слово inline с лямбдами в Kotlin

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

Ответ

inline используется для лямбд, чтобы избежать накладных расходов на создание анонимных классов при каждом вызове. Это особенно полезно для высокоуровневых функций (например, map, filter), где лямбды вызываются часто.

Пример:

inline fun performOperation(action: () -> Unit) {
    action()
}

// При компиляции код "встраивается", избегая создания объекта Function
performOperation { println("Inline lambda") }

Когда НЕ использовать:

  • Для больших лямбд (увеличивает размер бинарника).
  • Если лямбда передаётся в другую функцию без inline (например, в Java-метод).
  • Для рекурсивных лямбд (невозможно встроить).

Оптимально для коротких лямбд в performance-critical коде.