文章摘要
这篇文章介绍了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()
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()
© 版权声明
文章版权归作者所有,未经允许请勿转载。