suspend
- Kotlin kursu
- Orta seviye
- Ders 84/116
- 5 dk
suspend fun ile askıya alınabilir fonksiyon öğrenirsin.
suspend fonksiyonlar
Bir suspend fonksiyonu çalışmasını askıya alıp devam ettirebilir. suspend fun compute(): Int { delay(100); return 42 } tanımı bir değer hesaplar ama beklerken thread'i serbest bırakır.
Suspend fonksiyonlar yalnızca bir coroutine veya başka bir suspend fonksiyon içinden çağrılabilir. Normal bir fonksiyondan çağırmak derleme hatasıdır. Bu kısıtlama, beklemenin her zaman bir coroutine bağlamında olmasını sağlar. runBlocking veya launch içinden güvenle çağrılabilirler.
suspend anahtar kelimesi
suspend anahtar kelimesi fonksiyon bildiriminin başına gelir. Örnek: suspend fun compute(): Int. Gövdede delay gibi başka suspend fonksiyonlar çağrılabilir.
Bir suspend fonksiyonun dönüş değeri normal fonksiyon gibi kullanılır. runBlocking { println(compute()) } çağrısı compute'un bitmesini bekler ve sonucu yazdırır. Bekleme thread'i bloklamaz; delay süresince başka iş yapılabilir. Bu, eşzamanlı (concurrent) kodun senkron görünümlü yazılmasını sağlar.
Uygulama suspend fonksiyon tanımla ve çağır
import kotlinx.coroutines.* ekle. suspend fun compute(): Int { delay(100); return 42 } tanımla. fun main() = runBlocking { println(compute()) } yaz.
Başlangıç kodu
import kotlinx.coroutines.*
// compute suspend fonksiyonunu tanımla: delay sonrası 42 döndür
// main'de runBlocking içinde compute çağır ve yazdırÖrnek çözüm
import kotlinx.coroutines.*
suspend fun compute(): Int {
delay(100)
return 42
}
fun main() = runBlocking {
println(compute())
}Beklenen çıktı
42
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 suspend kavramlarını eşle
| Kavram | Anlamı |
|---|---|
suspend fun |
Bekletilebilir |
delay(100) |
Bekleme |
return 42 |
Değer |
runBlocking |
Köprü |
2 suspend fonksiyon nereden çağrılır?
- Her yerden
- Yalnızca main'den
- Coroutine veya suspend fonksiyon içinden Doğru cevap
- Yalnızca sınıftan
Açıklama: suspend fonksiyon bir coroutine veya suspend bağlamından çağrılır.
3 compute gövdesini tamamla
suspend fun compute(): Int {
delay(100)
return ____
}
suspend fun compute(): Int {
delay(100)
return 42
}
Açıklama: compute delay sonrası 42 verir.