function foo (a) print("foo",a) return 2*a --return coroutine.yield(2*a) end co = coroutine.create(function (a,b) print("co-body",a,b) local r = foo(a+1) r = coroutine.yield() print("after yeild!") print("co-body",r) local r,s = coroutine.yield(a+b,a-b) print("co-body",r,s) return b,"end" end) print("main",coroutine.resume(co,1,10)) print("main","z")) print("main","x","y")) print("main","y"))
结果
co-body 1 10
foo 2main true
after yeild!
co-body z
main true 11 -9
co-body x y
main true 10 end
main false cannot resume dead coroutine
感觉上形如r = coroutine.yield()这种的r是通过下次传的参数,而不是实际的返回值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。