Lua-lua 协程求解,初学希望大家给点提示
初学lua,最近看到一个协程的代码时不明白其意思了,想请教下大家
hxc = coroutine.create (function ()
print("hxc", coroutine.yield())
end)
coroutine.resume(hxc)
coroutine.resume(hxc, 4, 5) --> hxc 4 5
为什么第一个coroutine.resume(hxc) 啥也不输出?在这里不得其解,和第二个相比只多出了个4,5参数。 我原以为至少会输出一个 hxc,当然实际代码也啥都不输出。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
因为coroutine.create建的coroutine一开始就处于suspended状态,第一次resume才开始执行:
co = coroutine.create (function ()
print("co")
end)
print(coroutine.status(co)); --> suspended
coroutine.resume(co); --> co
所以在你的代码里,第一次resume让hxc开始执行,hxc输出"hxc"之后yield。第二次resume返回到print,输出4 5。