Membuat dan Melanjutkan Coroutine
Termasuk bagian Logika dan Alur dalam perjalanan Lua di Coddy. Pelajaran 49 dari 54.
Sekarang setelah kamu memahami apa itu coroutine, mari pelajari cara membuat dan menjalankannya di Lua.
Untuk membuat coroutine, kamu menggunakan fungsi coroutine.create(). Fungsi ini menerima fungsi biasa sebagai argumennya dan membungkusnya menjadi object coroutine. Berikut sintaks dasarnya:
function myTask()
print("Hello from coroutine!")
end
local co = coroutine.create(myTask)Pada tahap ini, coroutine sudah ada, tetapi belum mulai berjalan. Fungsi myTask belum dipanggil. Untuk benar-benar memulai atau melanjutkan eksekusi coroutine, kamu menggunakan coroutine.resume():
coroutine.resume(co)Saat kamu memanggil resume() pada coroutine untuk pertama kalinya, coroutine mulai berjalan dari awal fungsinya. Jika coroutine berjalan sampai selesai tanpa berhenti sementara, coroutine selesai dan tidak dapat dilanjutkan lagi.
Berikut contoh lengkapnya:
function greet()
print("Starting...")
print("Finishing!")
end
local co = coroutine.create(greet)
coroutine.resume(co) -- Mencetak kedua pesanCoroutine berjalan dari awal hingga akhir sekaligus. Di pelajaran berikutnya, kamu akan belajar cara membuat coroutine berhenti sementara di tengah eksekusi.
Tantangan
MudahTulis fungsi runSimpleCoroutine yang menerima message dan mengembalikan output dari coroutine yang mencetak pesan tersebut.
Buat coroutine menggunakan coroutine.create() yang membungkus fungsi untuk mencetak pesan yang diberikan. Lalu gunakan coroutine.resume() untuk menjalankan coroutine tersebut. Fungsi ini harus mengembalikan pesan yang dicetak.
Logika:
- Definisikan fungsi yang mencetak parameter pesan
- Buat coroutine dari fungsi tersebut menggunakan
coroutine.create() - Lanjutkan coroutine menggunakan
coroutine.resume() - Kembalikan pesan yang dicetak
Parameter:
message(string): Pesan yang akan dicetak oleh coroutine
Nilai yang dikembalikan: Pesan yang dicetak oleh coroutine (string)
Coba sendiri
function runSimpleCoroutine(message)
-- Tulis kodemu di sini
end
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Iterasi Tabel Tingkat Lanjut
Iterasi dengan pairs()Iterasi dengan ipairs()pairs() vs. ipairs()Rangkuman: Lembar Karakter2Fungsi library tabel Lainnya
table.concat()Pembuatan tabel & unpack()table.sort()Pengurutan Kustom dengan FungsiRangkuman, Papan Skor Tertinggi3Konsep Fungsi Tingkat Lanjut
Mengembalikan Beberapa NilaiFungsi Variadik (...)Fungsi sebagai Nilai Kelas SatuFungsi AnonimApa Itu Closure?Ulasan: Penangan Event Sederhana9Coroutine untuk Pemula
Apa Itu Coroutine?Membuat dan Melanjutkan CoroutineMenjeda dengan coroutine.yield()resume dan yieldMemeriksa Status CoroutineUlasan: Generator AngkaUlasan: Matematika VektorLatihan sendiri: Compiler Lua online