Lua中协同程序:意义和Unity中一样
Lua中协同程序的函数被放在coroutine的表中
协同程序状态:挂起、执行、死亡、正常
协程创建后默认为挂起状态
cor = coroutine.create( function()
print("111")
end
)
print(coroutine.status( cor )) --查看协程状态
coroutine.resume(cor) --开始协程
print(coroutine.status( cor )) --查看协程状态
yield 挂起 需要手动启动
local cor = coroutine.create( function()
for i=1,2 do
print(i)
coroutine.yield() --挂起
end
end)
coroutine.resume( cor )
print(coroutine.status( cor ))
coroutine.resume( cor )
print(coroutine.status( cor ))
resume 有两个返回值 第一个是协程是否正常执行,第二个是错误信息
local cor = coroutine.create( function()
error("aaabbb")
end)
local r1,err1 = coroutine.resume( cor )
print(r1)
print(err1)
当程序正常执行时,第二个返回值也可以是yield的值
local cor = coroutine.create( function(a)
print(a)
coroutine.yield( 'Young' )
end)
local rr,ee = coroutine.resume( cor,10,20 )
print(rr)
print(ee)
协程传参
local cor = coroutine.create( function(a,b)
print(a+b)
end)
coroutine.resume( cor,10,20 )
yield 函数也有返回值 ,返回值时resume的第二个参数
local cor = coroutine.create( function(a)
print(a)
local c = coroutine.yield( 'Young' )
print(c)
end)
coroutine.resume( cor,10)
coroutine.resume( cor,"lalala")
yield函数的返回值为resume的第二个参数
resume的返回值为yield的参数
网友评论