Lua-lua 协程求解,初学希望大家给点提示

发布于 2017-02-04 00:09:33 字数 315 浏览 1447 评论 1

初学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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清晨说ぺ晚安 2017-06-28 15:30:14

因为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。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文