从 C 调用 lua 函数时,可以使用 lua_gettop 检查返回了多少值。这甚至包括尾随的 nils - 有没有办法仅从 Lua 代码中做到这一点?这不起作用:
function GetValues()
return 1, 2, 3, nil, nil
end
local t = {GetValues()}
print("Returned "..table.getn(t).." values")
这打印 3.从 C 开始,可以看到返回了 5 个值。
在 Lua 5.2 中:
local t = table.pack(GetValues())
print("Returned " .. t.n .. " values")
打印 5.
在 Lua 5.1 中,table.pack
不是内置的,但你可以定义一个类似的函数,如下所示:
function pack(...)
local t = {...}
t.n = select('#', ...)
return t
end