Menu
Coddy logo textTech

Coroutine Durumunu Kontrol Etme

Coddy'nin Lua Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 52 / 54.

Coroutine'lerle çalışırken, bir coroutine'in hangi durumda olduğunu sık sık bilmeniz gerekir. Şu anda çalışıyor mu? Duraklatılmış ve devam ettirilmeyi mi bekliyor? Yürütülmesini tamamladı mı?

Lua, bu soruları yanıtlamak için coroutine.status() fonksiyonunu sağlar.

coroutine.status() işlevi, bağımsız değişken olarak bir coroutine alır ve mevcut durumunu açıklayan bir dize döndürür. Üç olası durum vardır:

"suspended"Coroutine bir yield() noktasında duraklatılmıştır ve devam ettirilebilir
"running"Coroutine şu anda yürütülüyor
"dead"Coroutine yürütmeyi tamamlamıştır ve yeniden devam ettirilemez

Şu şekilde kullanabilirsiniz:

function task()
    coroutine.yield()
    print("Finishing")
end

local co = coroutine.create(task)
print(coroutine.status(co))  -- "suspended"

coroutine.resume(co)
print(coroutine.status(co))  -- "suspended" (yield noktasında duraklatıldı)

coroutine.resume(co)
print(coroutine.status(co))  -- "dead" (tamamlandı)
challenge icon

Görev

Kolay

checkCoroutineLifecycle adlı, resumeCount parametresini alan ve bir coroutine'in yaşam döngüsünün farklı noktalarındaki durumunu gösteren bir dize döndüren bir işlev yazın.

Bir kez yield yapan ve ardından tamamlanan bir coroutine oluşturun. Oluşturulduktan sonra, ilk resume işleminden sonra (yield noktasında duraklatıldığında) ve resumeCount temel alınarak sonraki resume işlemlerinden sonra durumunu kontrol edip kaydedin.

Mantık:

  • Bir kez "paused" dizesini yield yapan, ardından tamamlanan bir işlev oluşturun
  • Bu işlevi coroutine.create() kullanarak bir coroutine içine sarın
  • Oluşturulduktan hemen sonraki durumu coroutine.status() kullanarak kontrol edin
  • Coroutine'i bir kez resume edin ve durumunu tekrar kontrol edin
  • Coroutine'i resumeCount - 1 temel alınarak ek kez resume edin (toplam resume sayısı = resumeCount)
  • Tüm resume işlemlerinden sonra son durumu kontrol edin
  • Üç durumun tümünü şu biçimde içeren bir dize döndürün: initial: [status]\\nafter first resume: [status]\\nfinal: [status]

Parametreler:

  • resumeCount (number): Coroutine'i resume etme sayısı (minimum 1)

Döndürür: Coroutine'in yaşam döngüsündeki üç noktadaki durumunu gösteren bir dize (string). Biçim: initial: suspended\nafter first resume: suspended\nfinal: dead

Kendin dene

function checkCoroutineLifecycle(resumeCount)
    -- Kodunuzu buraya yazın
end
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık ve Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online Lua derleyicisi