协同程序中的返回值 可以写在 coroutine.yield(返回值,返回值.....) ,也可以直接 return 返回值,返回值..... coroutine.yield 和 coroutine.resume 都是可以 拥有多个返回值的! coroutine.resume 的第一个返回值用来表示协程是否执行成功; 从 第二个开始往后 的返回值是 coroutine.yield 所返回的 。 coroutine.yield 的返回值是由 coroutine.resume 传入的, 即 coroutine.resume 的 参数(除了第一个参数以外的)。 关于协同程序内部和外部(主程序)的数据交流 下面是一段 菜鸟教程 的代码以及执行结果: 1 function foo (a) 2 print("foo 函数输出", a) 3 return coroutine.yield(2 * a) -- 返回 2*a 的值 4 end 5 6 co = coroutine.create(function (a , b) 7 print("第一次协同程序执行输出", a, b) -- co-body 1 10 8 local r = foo(a + 1) 9 10 print("第二次协同程序执行输出", r) 11 local r, s = coroutine