Menu
Coddy logo textTech

coroutine create ve resume

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

Artık coroutine'lerin ne olduğunu anladığınıza göre, Lua'da bunları gerçekte nasıl oluşturacağınızı ve çalıştıracağınızı öğrenelim.

Bir coroutine oluşturmak için coroutine.create() fonksiyonunu kullanırsınız. Bu fonksiyon, argüman olarak normal bir fonksiyon alır ve onu bir coroutine nesnesine sarar. İşte temel sözdizimi:

function myTask()
    print("Hello from coroutine!")
end

local co = coroutine.create(myTask)

Bu noktada, coroutine mevcuttur ancak henüz çalışmaya başlamamıştır. myTask fonksiyonu henüz çağrılmamıştır. Bir coroutine'in yürütülmesini gerçekten başlatmak veya devam ettirmek için coroutine.resume() kullanırsınız:

coroutine.resume(co)

Bir coroutine üzerinde ilk kez resume() işlevini çağırdığınızda, fonksiyonunun başından itibaren yürütülmeye başlar. Eğer coroutine duraklatılmadan sonuna kadar çalışırsa, tamamlanır ve tekrar devam ettirilemez.

İşte tam bir örnek:

function greet()
    print("Starting...")
    print("Finishing!")
end

local co = coroutine.create(greet)
coroutine.resume(co)  -- Her iki mesajı da yazdırır

Coroutine baştan sona tek seferde çalışır. Bir sonraki derste, coroutine'lerin yürütme sırasında nasıl duraklatılacağını öğreneceksiniz.

challenge icon

Görev

Kolay

Bir message alan ve bu mesajı yazdıran bir coroutine'den gelen çıktıyı döndüren bir runSimpleCoroutine fonksiyonu yazın.

Sağlanan mesajı yazdıran bir fonksiyonu sarmalayan coroutine.create() kullanarak bir coroutine oluşturun. Ardından coroutine'i çalıştırmak için coroutine.resume() kullanın. Fonksiyon, yazdırılan mesajı döndürmelidir.

Mantık:

  • Mesaj parametresini yazdıran bir fonksiyon tanımlayın
  • coroutine.create() kullanarak bu fonksiyondan bir coroutine oluşturun
  • coroutine.resume() kullanarak coroutine'i devam ettirin
  • Yazdırılan mesajı döndürün

Parametreler:

  • message (string): Coroutine tarafından yazdırılacak mesaj

Döndürür: Coroutine tarafından yazdırılan mesaj (string)

Kendin dene

function runSimpleCoroutine(message)
    -- 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