Lua 面试题 目录

Lua 中如何恢复协程?

推荐答案

在 Lua 中,可以使用 coroutine.resume 函数来恢复一个协程的执行。coroutine.resume 会从协程的当前挂起点继续执行,直到协程再次挂起或结束。

-- -------------------- ---- -------
-- ------
----- -- - ---------------------------
    -------------
    -----------------
    -------------
----

-- -------
--------------------  -- --- ----

-- -------
--------------------  -- --- ----

本题详细解读

协程的基本概念

协程是 Lua 中的一种轻量级线程,它允许程序在多个执行流之间切换。协程可以通过 coroutine.create 创建,并通过 coroutine.resume 启动或恢复执行。协程可以通过 coroutine.yield 挂起自身,等待后续的恢复。

coroutine.resume 的使用

coroutine.resume 函数用于启动或恢复一个协程的执行。它接受一个协程对象作为第一个参数,并可以传递额外的参数给协程。当协程执行到 coroutine.yield 时,协程会挂起,coroutine.resume 会返回 trueyield 的参数。当协程执行完毕时,coroutine.resume 会返回 true 和协程的返回值。

示例代码解析

  1. 创建协程:使用 coroutine.create 创建一个协程,协程的函数体包含两个 print 语句和一个 coroutine.yield
  2. 第一次恢复协程:调用 coroutine.resume(co),协程开始执行,输出 "协程开始",然后遇到 coroutine.yield 挂起。
  3. 第二次恢复协程:再次调用 coroutine.resume(co),协程从挂起点继续执行,输出 "协程恢复",然后协程结束。

通过这种方式,Lua 的协程可以在不同的执行点之间切换,实现复杂的控制流。

纠错
反馈