协程返回值中的"n"是什么?
What is "n" in the coroutine returned value?
我有以下协程和 table 看起来像这样:
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
代表什么?
自 Lua 5.2(我猜)以来,table.pack()
与 {...}
一样工作,但添加了存储项目数量的字段 'n'。这就是您获得的 'n' 密钥。
请注意,您只列出键,而不是值本身。
如果您不想要 'n',请使用 ipairs()
而不是 pairs()
。
我有以下协程和 table 看起来像这样:
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
代表什么?
自 Lua 5.2(我猜)以来,table.pack()
与 {...}
一样工作,但添加了存储项目数量的字段 'n'。这就是您获得的 'n' 密钥。
请注意,您只列出键,而不是值本身。
如果您不想要 'n',请使用 ipairs()
而不是 pairs()
。