Coroutine di Luau
Penjelasan
Coroutine memungkinkan sebuah fungsi dijeda di tengah eksekusi dan dilanjutkan nanti, berguna untuk tugas yang butuh berjalan bertahap tanpa memblokir seluruh game — misalnya animasi kustom atau proses yang butuh menunggu beberapa event tanpa membekukan script lain. Dibuat dengan `coroutine.create()`, dijalankan dengan `coroutine.resume()`, dan dijeda dari dalam dengan `coroutine.yield()`. Di Luau/Roblox modern, banyak kasus penggunaan coroutine dasar (seperti menunggu tanpa memblokir) sudah bisa digantikan task library (`task.spawn`, `task.wait`) yang lebih ringan dan idiomatik, tapi memahami coroutine tetap penting untuk kasus kontrol alur yang lebih rumit, seperti generator nilai bertahap.
Contoh Konsep
local co = coroutine.create(function()
for i = 1, 3 do
print("Langkah " .. i)
coroutine.yield()
end
print("Selesai")
end)
coroutine.resume(co) -- cetak "Langkah 1"
coroutine.resume(co) -- cetak "Langkah 2"
coroutine.resume(co) -- cetak "Langkah 3"
coroutine.resume(co) -- cetak "Selesai"
print(coroutine.status(co)) -- "dead"
Praktikum
Buat coroutine yang menghasilkan 5 angka Fibonacci pertama satu per satu, dijeda dengan yield tiap angka, lalu resume coroutine tersebut 5 kali dan cetak tiap hasilnya.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Cek `coroutine.status(co)` sebelum resume ulang — memanggil `coroutine.resume` pada coroutine berstatus "dead" akan gagal, jadi validasi status dulu di kode yang menjalankan coroutine berulang.