Sobes.tech
Junior — Middle

Kotlin-də crossinline açar sözünün istifadəsinin nə anlama gəldiyini və hansı hallarda tətbiq olunduğunu izah edə bilərsinizmi?

sobes.tech Süni İntellekt

AI-dan cavab

Kotlin-də crossinline açar sözü inline funksiyalar və lambda kontekstində istifadə olunur. Bu, funksiya parametrlərinə tətbiq edilir və non-local return operatorlarının istifadəsini qadağan edir.

Bir funksiya inline kimi işarələndikdə, lambda parametrləri də çağıran funksiyanın koduna daxil edilə bilər. Adətən, bu lambda-larda return istifadə edilərək xarici funksiyadan çıxmaq mümkündür (non-local return). Amma əgər lambda başqa bir funksiyaya ötürülür və ya asinxron şəkildə işlədilirsə, belə bir çıxış mümkün deyil.

crossinline non-local return-u qadağan edir və lambda-nın xarici funksiyanın icrasını kəsməsinə imkan vermir. Bu, lambda birbaşa çağırılmadıqda, məsələn, başqa bir funksiyaya ötürüləndə və ya başqa kontekstdə işlədiləndə faydalıdır.

Nümunə:

inline fun doSomething(crossinline action: () -> Unit) {
    val runnable = Runnable { action() }
    runnable.run()
}

Burada, crossinline action daxilində return istifadə edilərək doSomething-dən çıxışın qarşısını almaq üçün lazımdır, çünki action Runnable daxilində çağırılır.