在lua编程中,如果想要迭代处理函数的变参,可以用{...}将所有的变参收集到一个table中。但是有时变参中可能含有非法的nil,我们可以用select函数把非法的nil参数剔除。
示例
function foo(...)
for i = 1, select('#', ...) do
local arg = select(i, ...);
if arg then
print("arg"..i, arg);
end
end
end
foo(1,"a",nil, {2,3});
--[[ --output
arg1 1
arg2 a
arg4 table: 0x00021d88
]]
其中,select
函数中的第一个参数为
selector
,第二个参数为传入处理的变参。调用的时候,如果
selector
的值为数字n,那么select函数返回变参中的第n个参数,如果
selector
的值为'#',
select
函数会返回可变参数的总数目。