Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua “什么是”呢;";在协同程序返回值中?_Lua_Lua 5.3 - Fatal编程技术网

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
的返回值执行任何操作,所以除了第一个调用之外,其他调用都不执行任何操作。