Что такое crossinline функция в Kotlin

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

Ответ

crossinline — это модификатор для лямбда-параметров в Kotlin, который запрещает нелокальный возврат (return) из лямбды.

Когда использовать:
Если лямбда передаётся в другую функцию (например, в inline-функцию), но вызывается не напрямую, а внутри другого контекста (например, в новом потоке или коллбэке), то return из неё приведёт к ошибке. crossinline гарантирует, что лямбда не содержит нелокальных return.

Пример:

inline fun doAsync(crossinline action: () -> Unit) {
    thread { action() } // Лямбда выполняется в другом потоке
}

fun main() {
    doAsync { 
        println("Hello") 
        // return — запрещено из-за crossinline!
    }
}

Вывод:
crossinline нужен для безопасного использования лямбд в асинхронных или сторонних контекстах.