> Что такое crossinline в Kotlin и зачем он нужен (Kotlin, Android)
Уровень: junior · Роль: mobile · Категория: Технические вопросы
Компании: TrendTech
Стек: Kotlin, Android
> Пример ответа
crossinline - это модификатор для лямбда-параметров inline-функций. Он запрещает нелокальный return внутри этой лямбды, но при этом сохраняет инлайнинг кода.
Зачем нужен:
Когда вы объявляете inline-функцию, её лямбда-параметры по умолчанию могут использовать return для выхода из внешней функции (нелокальный return). Это удобно, но опасно, если лямбда передаётся в другой контекст (например, в лямбду другого объекта или в корутину). crossinline явно запрещает такой return, заставляя использовать только локальный return@label.
Пример:
inline fun runInScope(crossinline block: () -> Unit) { val runnable = Runnable { block() } // без crossinline здесь будет ошибка компиляции runnable.run() } fun main() { runInScope { // return // Ошибка: 'return' is not allowed here println("Работает") } }
Без crossinline компилятор выдаст ошибку, потому что нелокальный return не может быть выполнен внутри Runnable. Модификатор решает эту проблему, сохраняя производительность инлайна.
> Похожие задачи по mobile
Почему в Kotlin нет ключевого слова synchronized как в Java?
В чем особенности класса String в Kotlin
Есть ли проблемы при передаче массива вместо списка в дата класс Kotlin
Можно ли создать Singleton с параметризованным конструктором в Kotlin
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью