Junior — Middle
Was ist der Unterschied zwischen dem Übergeben einer Variablen vom Typ int und dem Übergeben einer Funktion via Lambda in einer deklarierten Inline-Funktion?
sobes.tech KI
Antwort von 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 передается как обычный параметр.