创建和恢复协程
本课属于 Coddy Lua 学习旅程的“逻辑与流程”单元。第 49 课,共 54 课。
现在你已经了解了协程是什么,接下来我们学习如何在 Lua 中创建并运行协程。
要创建协程,你可以使用 coroutine.create() 函数。这个函数接收一个普通函数作为参数,并将它包装成一个协程对象。基本语法如下:
function myTask()
print("Hello from coroutine!")
end
local co = coroutine.create(myTask)此时,协程已经创建,但还没有开始运行。函数 myTask 还没有被调用。要真正启动或继续执行协程,你需要使用 coroutine.resume():
coroutine.resume(co)第一次对协程调用 resume() 时,它会从函数开头开始执行。如果协程一直运行到结束,中间没有暂停,那么它就会完成,之后无法再次恢复。
这是一个完整的示例:
function greet()
print("Starting...")
print("Finishing!")
end
local co = coroutine.create(greet)
coroutine.resume(co) -- 输出两条消息协程会一口气从头运行到结束。在下一课中,你将学习如何让协程在执行过程中暂停。
挑战
简单编写一个函数 runSimpleCoroutine,接收一个 message,并返回协程打印该消息时的输出。
使用 coroutine.create() 创建一个协程,其中封装了一个用于打印所提供消息的函数。然后使用 coroutine.resume() 执行该协程。该函数应返回打印的消息。
逻辑:
- 定义一个用于打印消息参数的函数
- 使用
coroutine.create()根据该函数创建一个协程 - 使用
coroutine.resume()恢复该协程 - 返回打印的消息
参数:
message(字符串):协程要打印的消息
返回值:协程打印的消息(字符串)
亲手试试
function runSimpleCoroutine(message)
-- 在这里编写代码
end
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: Lua 在线编译器