Sobes.tech
Junior — Middle
90

Quelle est la différence entre passer une variable de type int et passer une fonction via lambda dans une fonction inline déclarée?

Entreprises à qui on a demandé
ДзенДзен

Réponse de l'IA

sobes.tech IA

В 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 передается как обычный параметр.