【问题标题】:Lua - specifying library for coroutineLua - 为协程指定库
【发布时间】:2013-10-31 11:04:54
【问题描述】:

在我的 Lua 脚本中,我有多个使用相同“结构”的库。例如,我有一个包含require('b')require('c') 的.lua。 b.lua 和 c.lua 都有 info 函数。 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 调用边界”。

【问题讨论】:

    标签: lua require coroutine meta-method


    【解决方案1】:

    coroutine.create(b.info()) 调用b.info 之前 恢复co

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

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

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

    【讨论】:

    • 我知道,但这与我得到的错误无关。我的意思是它开始自动启动很奇怪。我的问题是尝试生成协程时出错。
    猜你喜欢
    • 2013-10-29
    • 2011-11-04
    • 2015-01-23
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    • 2020-07-13
    • 1970-01-01
    相关资源
    最近更新 更多