基本
使用函式定義的引數列表中的 ... 橢圓語法建立變數函式。
function id(...)
return
end
如果你將此函式稱為 id(1, 2, 3, 4, 5),那麼 ...(AKA vararg 列表)將包含值 1, 2, 3, 4, 5。
函式可以使用必需的引數以及 ...。
function head(x, ...)
return x
end
從 vararg 列表中提取元素的最簡單方法是簡單地從中分配變數。
function head3(...)
local a, b, c = ...
return a, b, c
end
select() 也可用於間接查詢元素數量和從 ... 中提取元素。
function my_print(...)
for i = 1, select('#', ...) do
io.write(tostring(select(i, ...)) .. '\t')
end
io.write '\n'
end
通過使用 {...},... 可以裝入桌子以方便使用。這會將所有引數放在表的順序部分中。
Version >= 5.2
table.pack(...) 也可用於將 vararg 列表打包到表中。table.pack(...) 的優點是它將返回表的 n 欄位設定為 select('#', ...) 的值。如果你的引數列表可能包含 nils,這很重要(請參閱下面的備註部分)。
function my_tablepack(...)
local t = {...}
t.n = select('#', ...)
return t
end
vararg 列表也可以從函式返回。結果是多次退貨。
function all_or_none(...)
local t = table.pack(...)
for i = 1, t.n do
if not t[i] then
return -- return none
end
end
return ... -- return all
end