枚举带有尾随 nil 的变量返回值

  • 本文关键字:变量 返回值 nil 枚举 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 个值。

在 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

最新更新