Lua Coroutines

Coroutines in Lua are related to Generators (Python). They allow a function to be written to return intermittantly using the yield() function call on the coroutine table. The coroutine is created by passing a function to the coroutine.create(f) function. It returns a value of type thread, which can then be passed to coroutine.resume(t), which will run the code until the next coroutine.yield call or return.

Calls to resume are run in protected mode (Lua), which means errors won't be raised, but returned as a string to the caller.

The Roblox API includes a coroutine.wrap(f) function, which returns a function that can be called without requiring resume.

References:

  • https://developer.roblox.com/en-us/api-reference/lua-docs/coroutine
  • https://www.lua.org/pil/9.1.html