coroutine create ve resume
Coddy'nin Lua Journey'sinin Logic & Flow 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ırCoroutine baştan sona tek seferde çalışır. Bir sonraki derste, coroutine'lerin yürütme sırasında nasıl duraklatılacağını öğreneceksiniz.
Görev
KolayBir 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şturuncoroutine.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)
Kopya kağıdı
Bir coroutine oluşturmak için, argüman olarak bir fonksiyon ile coroutine.create() kullanın:
function myTask()
print("Hello from coroutine!")
end
local co = coroutine.create(myTask)Bir coroutine'in yürütülmesini başlatmak veya devam ettirmek için coroutine.resume() kullanın:
coroutine.resume(co)Tam örnek:
function greet()
print("Starting...")
print("Finishing!")
end
local co = coroutine.create(greet)
coroutine.resume(co) -- Her iki mesajı da yazdırırresume() ilk kez çağrıldığında, coroutine baştan yürütülmeye başlar. Eğer duraklamadan tamamlanana kadar çalışırsa, tekrar devam ettirilemez.
Kendin dene
function runSimpleCoroutine(message)
-- Kodunuzu buraya yazın
end
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Logic & Flow 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ği