Junior — Middle
Koja je razlika između prosleđivanja promenljive tipa int i prosleđivanja funkcije putem lambda u deklarisanoj inline funkciji?
sobes.tech АИ
Одговор од АИ
В 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 передается как обычный параметр.