Lua - 为协程指定库



在我的Lua脚本中,我有多个使用相同的"结构"的库。例如,我有一个.lua包含require('b')require('c')的内容。b.lua 和 c.lua都有一个信息函数。b.lua让它打印"b"和c.lua让它打印"c"。在 a.lua我想使用 B.lua 或 C.lua 中的 info() 启动一个协程。

这是我的b.lua:

b = {}
function b.info()
  coroutine.yield()
  print("b")
  print("b2")
end

C.lua具有类似的结构,但大多数B被替换为C。当尝试使用 local co = coroutine.create(b.info()) 启动协程时(这也很奇怪,因为它通常开始挂起),我收到类似"尝试跨元方法/C 调用边界屈服"的错误。

coroutine.create(b.info())

恢复co之前调用b.info

您需要传递一个函数,而不是函数调用,如

local co = coroutine.create(b.info)
coroutine.resume(co)        -- prints nothing
coroutine.resume(co)        -- prints b, b2

co = coroutine.wrap(b.info)
co()
co()

最新更新