Study
Luau

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.

Editor Latihan

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.