Junior — Middle
Wat is het verschil tussen het doorgeven van een variabele van het type int en het doorgeven van een functie via lambda in een gedeclareerde inline functie?
sobes.tech AI
Antwoord van 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 передается как обычный параметр.