在我的Lua脚本中,我有多个使用相同“结构”的库。例如,我有包含a.lua和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")
endC.lua有一个类似的结构,但大多数B是用C代替的。当尝试用local co = coroutine.create(b.info())启动协同线时(这也很奇怪,因为通常它开始挂起),我得到了一个错误,比如“尝试跨元方法/C调用边界屈服”。
发布于 2013-10-22 15:12:05
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()https://stackoverflow.com/questions/19520213
复制相似问题