CodeBlanks Logo Icon CodeBlanks

suspend

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

Main.kt
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

Main.kt
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

Soru
suspend fun compute(): Int {
    delay(100)
    return ____
}
Cevap
suspend fun compute(): Int {
    delay(100)
    return 42
}

Açıklama: compute delay sonrası 42 verir.

Orta seviye bölümündeki tüm dersler