Ответ
crossinline — это модификатор для лямбда-параметров в Kotlin, который запрещает нелокальный возврат (return) из лямбды.
Когда использовать:
Если лямбда передаётся в другую функцию (например, в inline-функцию), но вызывается не напрямую, а внутри другого контекста (например, в новом потоке или коллбэке), то return из неё приведёт к ошибке. crossinline гарантирует, что лямбда не содержит нелокальных return.
Пример:
inline fun doAsync(crossinline action: () -> Unit) {
thread { action() } // Лямбда выполняется в другом потоке
}
fun main() {
doAsync {
println("Hello")
// return — запрещено из-за crossinline!
}
}
Вывод:
crossinline нужен для безопасного использования лямбд в асинхронных или сторонних контекстах.