> Можно ли пометить лямбду как inline в Kotlin (Kotlin, Android)

Уровень: middle · Роль: mobile · Категория: Технические вопросы

Компании: TrendTech

Стек: Kotlin, Android

> Пример ответа

Да, в Kotlin можно пометить лямбду как inline, но не напрямую. Ключевое слово inline применяется к функциям, а не к самим лямбда-выражениям. Однако, если вы объявляете функцию высшего порядка (принимающую лямбду в качестве параметра) с модификатором inline, то переданная лямбда также будет встроена (inlined) в место вызова.

Пример:

inline fun performAction(action: () -> Unit) {
    println("Before")
    action()
    println("After")
}

fun main() {
    performAction { println("Action") }
}

Здесь лямбда { println("Action") } будет встроена в тело функции performAction на этапе компиляции, что позволяет избежать накладных расходов на создание анонимного объекта и вызов. Это особенно полезно в Android-разработке для оптимизации производительности, например, при работе с коллекциями или корутинами.

Если же вы хотите запретить встраивание конкретной лямбды внутри inline-функции, используйте модификатор noinline:

inline fun process(block: () -> Unit, noinline other: () -> Unit) {
    block() // будет встроена
    other() // не будет встроена
}

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью