Lua “什么是”呢;";在协同程序返回值中?
我有如下的协同程序和表,如下所示:Lua “什么是”呢;";在协同程序返回值中?,lua,lua-5.3,Lua,Lua 5.3,我有如下的协同程序和表,如下所示: co = coroutine.create(function(...) for item in pairs(table.pack(...)) do coroutine.yield(item) end coroutine.yield('Evil') return 'NO!' end) values = {1, 2, 3, 4, 5, 6} 当我调用resume时,它按预期生成值,并突然在Evil之前生成n > coroutin
co = coroutine.create(function(...)
for item in pairs(table.pack(...)) do
coroutine.yield(item)
end
coroutine.yield('Evil')
return 'NO!'
end)
values = {1, 2, 3, 4, 5, 6}
当我调用resume时,它按预期生成值,并突然在Evil
之前生成n
> coroutine.resume(co, table.unpack(values))
true 1
> coroutine.resume(co, table.unpack(values))
true 2
> coroutine.resume(co, table.unpack(values))
true 3
> coroutine.resume(co, table.unpack(values))
true 4
> coroutine.resume(co, table.unpack(values))
true 5
> coroutine.resume(co, table.unpack(values))
true 6
> coroutine.resume(co, table.unpack(values))
true n -- Here we have n
> coroutine.resume(co, table.unpack(values))
true Evil
> coroutine.resume(co, table.unpack(values))
true NO!
n
代表什么?因为Lua5.2(我猜),table.pack()
作为{…}
工作,但添加了存储项目数量的字段“n”。这是你得到的“n”键
请注意,您只列出了键,而不是值本身
如果您不想使用“n”,请使用
ipairs()
而不是pairs()
旁注:在对coroutine.resume的所有调用中,使用表.unpack(values)
,因为您不使用coroutine.yield
的返回值执行任何操作,所以除了第一个调用之外,其他调用都不执行任何操作。