Menu
CoddyTech

创建和恢复协程

本课属于 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)  -- 输出两条消息

协程会一口气从头运行到结束。在下一课中,你将学习如何让协程在执行过程中暂停。

challenge icon

挑战

简单

编写一个函数 runSimpleCoroutine,接收一个 message,并返回协程打印该消息时的输出。

使用 coroutine.create() 创建一个协程,其中封装了一个用于打印所提供消息的函数。然后使用 coroutine.resume() 执行该协程。该函数应返回打印的消息。

逻辑:

  • 定义一个用于打印消息参数的函数
  • 使用 coroutine.create() 根据该函数创建一个协程
  • 使用 coroutine.resume() 恢复该协程
  • 返回打印的消息

参数:

  • message(字符串):协程要打印的消息

返回值:协程打印的消息(字符串)

亲手试试

function runSimpleCoroutine(message)
    -- 在这里编写代码
end
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: Lua 在线编译器