获取可变参数列表的长度

function countargs(...)
  return #arg
end

> countargs(1, 2, 3)
0

在这种情况下,countargs 返回 0 而不是 3。如何获取可变参数列表的长度?

我在 Windows 上测试了 Lua 5.3 和 5.4。

点赞
用户12568711
用户12568711
函数 countargs(...)
  本地 arg = {...}
  返回 #arg
结束函数

函数 countargs(...)
  返回 #{...}
结束函数
2020-09-15 02:23:09
用户734069
用户734069

... 中元素的数量可以通过 select("#", ...) 计算。需要注意的是,与像 #{...} 这样的语法不同,这将包括任何嵌入的 nil 元素。

然而,通常您不需要直接获取长度;您真正需要的是包含相关元素的表格。为了建立这个表格,请调用 table.pack(...)。这将返回一个包含所有 ... 元素的表格,并且长度将在键 "n" 上,这允许您遍历甚至包含嵌入的 nil 元素的 ...

2020-09-15 02:30:14