微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

lua中的coroutine

     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 2
main 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] 举报,一经查实,本站将立刻删除。

相关推荐