1. 程式人生 > >lua協程中法wrap和create方法的區別

lua協程中法wrap和create方法的區別

coroutine.create(f):用函式 f 建立一個協程,返回 thread 型別物件。
coroutine.wrap(f):與前面 coroutine.create 一樣,coroutine.wrap 函式也建立一個協程,與前者返回協程本身不同,後者返回一個函式。當呼叫該函式時,重新執行協程。

co01=coroutine.create(function(a) return 2*a end)
a,b=coroutine.resume(co01,20)
print(a,b)
co02=coroutine.wrap(function(a) return 2*a end)
c=co02(20)
print
(c) print("==========分割線===========") co = coroutine.wrap(function(a) local c = coroutine.yield(a+1) print("main func a: ",a) return 2*a end) b = co(20) print(b) -- 21 --從yield後面執行 d = co(b+1) print(d) -- 40 print("==========分割線===========") co = coroutine.create(function(a) local c = coroutine.yield(a+1
) print("main func c: ",c) return 2*a end) b,v = coroutine.resume(co,20) print(b,v) -- true,21 b,v = coroutine.resume(co,20) print(b,v) -- true,40