coroutine.yield(-1)是什么意思?我在这里不了解-1

代码段和输出为:

> function odd(x)
>>   print('A: odd', x)
>>   coroutine.yield(x)
>>   print('B: odd', x)
>> end
>
> function even(x)
>>   print('C: even', x)
>>   if x==2 then return x end
>>   print('D: even ', x)
>> end
>
> co = coroutine.create(
>>   function (x)
>>     for i=1,x do
>>       if i==3 then coroutine.yield(-1) end
>>       if i % 2 == 0 then even(i) else odd(i) end
>>     end
>>   end)
>
> count = 1
> while coroutine.status(co) ~= 'dead' do
>>   print('----', count) ; count = count+1
>>   errorfree, value = coroutine.resume(co, 5)
>>   print('E: errorfree, value, status', errorfree, value, coroutine.status(co))
>> end
----    1
A: odd  1
E: errorfree, value, status     true    1       suspended
----    2
B: odd  1
C: even 2
E: errorfree, value, status     true    -1      suspended
----    3
A: odd  3
E: errorfree, value, status     true    3       suspended
----    4
B: odd  3
C: even 4
D: even         4
A: odd  5
E: errorfree, value, status     true    5       suspended
----    5
B: odd  5
E: errorfree, value, status     true    nil     dead
>

最佳答案

传递给相应coroutine.yield的任何参数都由coroutine.resume返回。所以这里的-1中的coroutine.yield(-1)没什么特别的,它与函数coroutine.yield(x)中的odd(x)相似。

counter2并且i3时执行。相应的输出是:

----    2
B: odd  1
C: even 2
E: errorfree, value, status     true    -1      suspended


ture指示无错误之后,在这里看到-1吗?这是对coroutine.yield(-1)的调用中的值,最终作为coroutine.resume的返回值。

由于类似的原因,coroutine.resume的其他返回值是135,它们都来自函数coroutine.yield(x)中的odd(x)

关于lua - Lua coroutine.yield(-1)的意思是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20343097/

10-09 01:02