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ırCoroutine, baştan sona tek seferde çalışır. Sonraki derste coroutine'leri yürütmenin ortasında nasıl duraklatacağını öğreneceksin.
Görev
KolayBir 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
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
1İleri Düzey Tablo Yineleme
pairs() ile Yinelemeipairs() ile Yinelemepairs() vs. ipairs()Özet - Karakter Sayfası2Daha Fazla Tablo Kütüphanesi Fonksiyonu
table.concat()Tablo Oluşturma ve unpack()table.sort()Fonksiyonlar ile Özel SıralamaÖzet - Yüksek Skor Tablosu3İleri Düzey Fonksiyon Kavramları
Birden Fazla Değer DöndürmeVariadic Fonksiyonlar (...)Birinci Sınıf Değer Olarak FonksiyonlarAnonim FonksiyonlarClosure Nedir?Özet - Basit Event Handler9Yeni Başlayanlar İçin Coroutine'ler
Coroutine Nedir?coroutine create ve resumecoroutine.yield() ile Duraklatmaresume ve yieldCoroutine Durumunu Kontrol EtmeÖzet - Sayı ÜreticiÖzet - Vektör MatematiğiKendi başına pratik yap: Online Lua derleyicisi