LUA教程函式可變引數 18

2021-10-08 01:42:33 字數 1528 閱讀 5944

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...