Sobes.tech
Назад к вопросам
Junior — Middle
72

Какое отличие между передачей переменной типа int и передачи функции через lambda в объявленной inline функции?

Компании, где спрашивали
ДзенДзен

Ответ от нейросети

sobes.tech AI

В Kotlin при объявлении inline функции передача переменной типа int и передача функции через lambda имеют разные механизмы:

  • Передача int — это передача значения по значению (копирование), что быстро и просто.
  • Передача lambda — обычно создает объект функции и замыкание, что может влиять на производительность.

Однако, если функция объявлена как inline, компилятор вставляет тело lambda прямо в место вызова, что устраняет накладные расходы на создание объекта и вызов функции. Это улучшает производительность при использовании лямбд.

Пример:

inline fun doSomething(x: Int, action: () -> Unit) {
    println("Value: $x")
    action() // lambda будет встроена сюда
}

fun main() {
    doSomething(5) {
        println("Action executed")
    }
}

Здесь lambda не создает дополнительного объекта благодаря inline, а int передается как обычный параметр.