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ığına göre, Lua'da onları nasıl oluşturup çalıştıracağını öğrenelim.

Bir coroutine oluşturmak için coroutine.create() işlevini kullanırsın. Bu işlev, bağımsız değişkeni olarak normal bir işlev alır ve onu bir coroutine nesnesine dönüştürür. Temel söz dizimi şöyledir:

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

local co = coroutine.create(myTask)

Bu noktada coroutine mevcut, ancak henüz çalışmaya başlamadı. myTask işlevi çağrılmadı. Bir coroutine'in yürütülmesini gerçekten başlatmak veya sürdürmek için coroutine.resume() kullanırsın:

coroutine.resume(co)

Bir coroutine üzerinde ilk kez resume() çağırdığınızda, coroutine kendi işlevinin başından itibaren çalışmaya başlar. Coroutine duraklamadan sonuna kadar çalışırsa tamamlanır ve yeniden sürdürülemez.

İşte eksiksiz 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. Sonraki derste coroutine'leri yürütmenin ortasında nasıl duraklatacağını öğreneceksin.

challenge icon

Görev

Kolay

Bir message alan ve bu mesajı yazdıran bir korutinin çıktısını döndüren runSimpleCoroutine adlı bir işlev yazın.

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

Mantık:

  • message parametresini yazdıran bir işlev tanımlayın
  • Bu işlevden coroutine.create() kullanarak bir korutin oluşturun
  • coroutine.resume() kullanarak korutini devam ettirin
  • Yazdırılan mesajı döndürün

Parametreler:

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

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

Kendin dene

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