Для чего нужен noinline

«Для чего нужен noinline» — вопрос из категории Kotlin, который задают на 24% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

noinline — это модификатор в Kotlin, который указывает компилятору не встраивать лямбда-выражение, переданное в функцию с модификатором inline.

Когда использовать:

  • Если лямбда передается в другую функцию (не inline).
  • Если нужно сохранить ссылку на лямбду (например, для отложенного выполнения).

Пример:

inline fun executeTask(noinline task: () -> Unit) {  
    // task нельзя встроить, так как он передается дальше  
    runLater(task)  
}  

fun runLater(action: () -> Unit) {  
    // выполнение action  
}  

Без noinline компилятор выдаст ошибку, так как inline-функция пытается передать лямбду в не-inline контекст.