枚举变量返回尾随的 nil 值。

当从 C 中调用 lua 函数时,可以使用 lua_gettop 检查返回了多少个值。这甚至包括尾随的 nil - 是否有办法仅使用 Lua 代码来执行此操作?以下代码不能做到这一点:

function GetValues()
  return 1, 2, 3, nil, nil
end

local t = {GetValues()}
print("Returned "..table.getn(t).." values")

这将打印 3。从 C 中执行此操作,可以看到返回了 5 个值。

点赞
用户12048
用户12048

在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
2014-03-02 19:53:47