正文

Lua编程示例(七):协同程序基础逻辑(lua编程零基础教学)这样也行?

文章摘要

这篇文章介绍了Co语言(Coperations)中的协程(coroutine)机制,重点围绕`coroutine.create`和`coroutine.resume`方法展开。文章通过多个示例展示了如何使用协程,包括: 1. **协程的基本创建与暂停**:展示了如何使用`coroutine.create`函数创建协程,并通过`coroutine.resume`将其暂停和恢复。 2. **使用`coroutine.yield`暂停执行**:解释了如何在协程内部使用`coroutine.yield`方法暂停当前任务,以便进行其他操作。 3. **传参与不传参的情况**:分析了不同参数传入对协程执行的影响,包括不传参、传参以及传参后处理返回值。 4. **函数内部的返回值处理**:探讨了在协程内部函数返回值如何被`coroutine.resume`处理,并展示了其在不同场景下的表现。 文章通过代码示例详细说明了协程的操作流程,突出了协程的暂停与恢复机制,以及如何通过传入参数和返回值来控制协程的执行。整体内容简明扼要,重点突出协程的使用场景和关键操作。

 co=coroutine.create(function() print(“hi”) end) print(coroutine.status(co)) coroutine.resume(co) print(coroutine.status(co)) print() co=coroutine.create(function() for i=1,2 do print(“co”,i) coroutine.yield() end end) coroutine.resume(co) print(coroutine.status(co)) coroutine.resume(co) print(coroutine.status(co)) coroutine.resume(co) –没有输出 print(coroutine.status(co)) print() co=coroutine.create(function(a,b,c) print(“co”,a,b,c) end) coroutine.resume(co,1,2,3) co=coroutine.create(function(a,b) print(“I’m before yield”) –第一次运行执行 coroutine.yield(a+b,a-b,”needless args”) –在这停住,返回yield的参数 print(“Mgs”) end) print(coroutine.resume(co,20,10)) –参数传给yield,处理后再返回 print(“I print first”) coroutine.resume(co) co=coroutine.create(function() return “I’ll return” end) print(coroutine.resume(co)) –主函数的返回值回传给resume print()