我有以下协程和表格,如下所示:
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}
当我致电简历时,它会按预期产生价值,并在n
Evil
> 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
代表什么?
答案 0 :(得分:2)
自Lua 5.2(我猜)以来,table.pack()
作为{...}
使用,但添加字段' n'存储项目数量。那是' n'你得到的关键。
请注意,您只列出了键,而不是值本身。
如果您不想要' n,请使用ipairs()
代替pairs()
。