variable number of arguments :变长参数,指函数可以拥有不同数量的实参。
当函数需要一个或者多个参数时,可以使用...代替这些参数。此时...为表达式,表达式...的行为类似于一个具有多重返回值的函数,返回当前函数的所有参数。
e.g.
function add(...)
local s = 0
for i,v in ipairs{...} do --{...} 代表一个由变长参数组成的数组
s = s+v
end
return s
end
print(add(3,4,5,6,7)) -->25
既然...是表达式,就可以赋值给变量a,b:local a, b = ...
同样,变长参数也能拥有任意数量的固定参数,只需要将固定参数放在变长参数之前即可,那么余下的参数就属于变长参数。
e.g.
function fwirte(fmt,...) --fmt为固定参数
return io.write(string.format(fmt,...))
end
fwrite() --fmt = nil,无变长参数
fwrite("a") --fmt="a" ,无变长参数
fwrite("%d%d",4,5) --fmt="