从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个值。
答案 0 :(得分:3)
在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