Junior — Middle
92
Kotlin-те crossinline кілтсөзінің қолданылуы не білдіретінін және ол қай жағдайларда қолданылатынын түсіндіре аласыз ба?
Сұралған компаниялар
ПСБ
Платформа Трим
Инити
AI-дан жауап
sobes.tech AI
Kotlin-да crossinline кілттік сөзі inline-функциялар үшін параметр-функциялар (лямбда) жариялау кезінде пайдаланылады, ол return операторын лямбдадан шығуға тыйым салады, ол сыртқы функциядан шығуға тырысады.
Функция inline деп белгіленсе, лямбда-параметрлер return пайдаланып сыртқы функциядан шығуға мүмкіндік береді (жергілікті емес қайтару). Бірақ егер лямбда басқа функцияға берілсе немесе асинхронды түрде орындалса, мұндай return мүмкін емес.
crossinline жергілікті емес қайтаруға тыйым салады, осылайша лямбданы осындай контексттерде қауіпсіз пайдалану мүмкіндігін береді.
Мысал:
inline fun doSomething(crossinline action: () -> Unit) {
val runnable = Runnable {
action() // мұнда жергілікті емес қайтару қолдануға болмайды
}
runnable.run()
}
Мұнда crossinline action-ның жергілікті емес қайтару жасауға тырысуды болдырмайды, бұл компиляция қателерін болдырмайды.