使用尾随nils枚举变量返回值

时间:2014-03-02 19:38:12

标签: lua

从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个值。

1 个答案:

答案 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