Menu
CoddyTech

Memeriksa Status Coroutine

Termasuk bagian Logika dan Alur dalam perjalanan Lua di Coddy. Pelajaran 52 dari 54.

Saat bekerja dengan coroutine, kamu sering perlu mengetahui status coroutine. Apakah coroutine sedang berjalan? Apakah coroutine dijeda dan menunggu untuk dilanjutkan? Apakah coroutine sudah selesai dijalankan?

Lua menyediakan fungsi coroutine.status() untuk menjawab pertanyaan-pertanyaan ini.

Fungsi coroutine.status() menerima coroutine sebagai argumennya dan mengembalikan string yang menjelaskan statusnya saat ini. Ada tiga kemungkinan status:

"suspended"Coroutine dijeda pada yield() dan dapat dilanjutkan
"running"Coroutine sedang dijalankan
"dead"Coroutine telah selesai dijalankan dan tidak dapat dilanjutkan lagi

Berikut cara menggunakannya:

function task()
    coroutine.yield()
    print("Finishing")
end

local co = coroutine.create(task)
print(coroutine.status(co))  -- "suspended"

coroutine.resume(co)
print(coroutine.status(co))  -- "suspended" (dijeda pada yield)

coroutine.resume(co)
print(coroutine.status(co))  -- "dead" (selesai)
challenge icon

Tantangan

Mudah

Tulis fungsi checkCoroutineLifecycle yang menerima resumeCount dan mengembalikan string yang menunjukkan status coroutine pada berbagai titik dalam siklus hidupnya.

Buat coroutine yang melakukan yield sekali, lalu selesai. Periksa dan catat statusnya setelah dibuat, setelah resume pertama (saat coroutine dijeda pada yield), dan setelah resume selanjutnya berdasarkan resumeCount.

Logika:

  • Buat fungsi yang melakukan yield dengan string "paused" sekali, lalu selesai
  • Bungkus fungsi ini dalam coroutine menggunakan coroutine.create()
  • Periksa status segera setelah pembuatan menggunakan coroutine.status()
  • Lakukan resume pada coroutine sekali, lalu periksa statusnya lagi
  • Lakukan resume pada coroutine beberapa kali lagi berdasarkan resumeCount - 1 (total resume = resumeCount)
  • Periksa status akhir setelah semua resume
  • Kembalikan string yang memuat ketiga status dengan format: initial: [status]\\nafter first resume: [status]\\nfinal: [status]

Parameter:

  • resumeCount (number): Jumlah total resume pada coroutine (minimal 1)

Nilai yang dikembalikan: String yang menunjukkan status coroutine pada tiga titik dalam siklus hidupnya (string). Format: initial: suspended\nafter first resume: suspended\nfinal: dead

Coba sendiri

function checkCoroutineLifecycle(resumeCount)
    -- Tulis kodemu di sini
end
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler Lua online