Junior — Middle
Kotlin'de crossinline olarak ilan edilen bir fonksiyon içinde, mevcut bağlam dışına çıkmadan fonksiyondan dönüş yapmak mümkün mü?
sobes.tech yapay zeka
AI'dan gelen yanıt
Kotlin'de, crossinline modifiyesiyle ilan edilen bir fonksiyon, aldığı lambda'dan kontrolsüz dönüşleri (non-local return) engeller. Bu, lambda içinden return kullanılarak dış fonksiyondan çıkılamayacağı anlamına gelir.
Örnek:
inline fun foo(crossinline block: () -> Unit) {
val runnable = Runnable {
block() // burada non-local return kullanılamaz
}
runnable.run()
}
fun bar() {
foo {
// return // derleme hatası, non-local return yapılamaz
println("Lambda çalıştırılıyor")
}
println("bar fonksiyonunun devamı")
}
Bu nedenle, crossinline lambda içinde mevcut bağlam dışındaki fonksiyondan dönüş yapılamaz. Bu kısıtlama, özellikle asenkron veya ertelenmiş çağrılarda lambda kullanımı sırasında kodun güvenliği ve öngörülebilirliği için getirilmiştir.