【lua学习】 闭包和协程使用
自己随便写的案例
-- coroutine_closures.lua
function indexFun()
local x = 3
return function()
x = x - 1
return x
end
end
function funYield(t)
print("fun")
while t >= 0 do
print("funYield : ", t)
print("coroutine:", coroutine.running(co), coroutine.status(coroutine.running(co)))
coroutine.yield(t)
end
return "end"
end
local co = coroutine.create(funYield)
-- Main
print(coroutine.running(co))
print(coroutine.resume(co, 3))
local tempFun = indexFun()
while true do
local id = tempFun()
print("index:", id)
print(coroutine.resume(co, id))
print("status:", coroutine.status(co))
if "dead" == coroutine.status(co) then
break
end
if id <= 0 then
break
end
end
print(coroutine.resume(co))
print(coroutine.running(co))