В чем разница между передачей int и lambda в inline функцию

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

Ответ

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

Передача Int:
Примитивные типы (Int, Boolean и т.д.) передаются по значению. В inline функции компилятор просто подставляет значение напрямую, без создания объекта.

Передача лямбды:
Лямбды обычно создают анонимные классы (Function объекты), что может влиять на производительность. Но если лямбда передается в inline функцию, компилятор встраивает её тело прямо в место вызова, избегая создания объекта.

Пример:

inline fun process(value: Int, action: (Int) -> Unit) {
    action(value)
}

fun main() {
    process(5) { println(it) } // Лямбда встраивается, объект не создаётся
}

Итог:
Int передаётся по значению, а лямбда в inline функции оптимизируется – её код встраивается, избегая накладных расходов.