lua函式可以接受可變數目的引數,和c語言類似在函式引數列表中使用三點(...)表示函式有可變的引數。lua將函式的引數放在乙個叫arg的表中,除了引數以外,arg表中還有乙個域n表示引數的個數。
例如,我們可以重寫print函式:
printresult = ""
function print(...)
for i,v in ipairs(arg) do
printresult = printresult .. tostring(v) .. "\t"
endprintresult = printresult .. "\n"
end
有時候我們可能需要幾個固定引數加上可變引數
function g (a, b, ...) end
call parameters
g(3) a=3, b=nil, arg=
g(3, 4) a=3, b=4, arg=
g(3, 4, 5, 8) a=3, b=4, arg=
如上面所示,lua會將前面的實參傳給函式的固定引數,後面的實參放在arg表中。
舉個具體的例子,如果我們只想要string.find返回的第二個值。乙個典型的方法是使用啞元(dummy variable,下劃線):
local _, x = string.find(s, p)
-- now use `x'
...
還可以利用可變引數宣告乙個select函式:
function select (n, ...)
return arg[n]
end
print(string.find("hello hello", " hel")) --> 6 9
print(select(1, string.find("hello hello", " hel"))) --> 6
print(select(2, string.find("hello hello", " hel"))) --> 9
有時候需要將函式的可變引數傳遞給另外的函式呼叫,可以使用前面我們說過的unpack(arg)返回arg表所有的可變引數,lua提供了乙個文字格式化的函式string.format(類似c語言的sprintf函式):/strong>
function fwrite(fmt, ...)
return io.write(string.format(fmt, unpack(arg)))
end
這個例子將文字格式化操作和寫操作組合為乙個函式。
原文:lua乙個小巧指令碼語言學習筆記
lua教程函式可變引數-18
lua 函式的可變引數
lua 函式的可變引數我覺得是蠻好用的,傳入,解包都比較清晰明了 1 遍歷可變引數 local function test local arg for k,v in pairs arg do print k is v endendtest 1,2,33,ab var,eg 執行結果為 可以看到k值是...
lua 函式的可變引數
主要掌握 1 虛變數 乙個下劃線 2 lua將函式的可變引數放在乙個叫 arg 的表中,除了引數以外,arg表中還有乙個域n表示引數的個數。1do2 function fun x,y,3end 45 fun 1 x 1,y nil,arg 6 fun 1,2 x 1,y 2 arg 7 fun 1,...
lua 可變長引數
lua 中 在引數列表中意為 可變引數 這個可變是指,通過這個可以輸入很多引數,但是不需要一一枚舉出來!例子 function a local a1 a2,a3,a4 print this is local num a1,a2,a3,a4 return a1,a2,a3,a4 endlocal at...