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值是整數的索引,沒有索引5,因為他是乙個nil值,如果用ipairs來遍歷,那麼只會列印前4組值.
如果我們只關注第n個引數,那麼只需呼叫select(n, ...)
local function test(...)
local v3 = select('3', ...)
print('v3 is ', v3)
local v7 = select(7, ...)
for k, v in ipairs(v7) do
print (k ,' is ', v)
endendtest(1,2,33, 'ab', var, 'eg', )
執行結果為:
我們看到select的索引引數既可以為int,也可以為string,如'1'.
順便說一句,想要知道整個可變引數的長度,除了呼叫#,還可以用下面的
local len= select('#', ...) 等價於#
他包括了可變引數中有nil值的個數,當nil只有乙個,切不為最後乙個時.即# ===3, # === 5,注意# ===3
另外可變引數只能在引數後面,例如function_name(var1, var2, ...),那麼傳入引數時,從第三個引數算起為可變引數
有個疑問,select(n, p1,p2,p3,...)和t[n],t為的區別是什麼?
select(n,p1,p2,p3,...)其實是返回的[pn,pn]的序列,即
pn, pn+1,... = select(n,p1,p2,p3,...)
select引數也可以是固定的,例如select(n, 1,2,3),可以對錶select(n,table.unpack(tab))
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教程函式可變引數 18
lua函式可以接受可變數目的引數,和c語言類似在函式引數列表中使用三點 表示函式有可變的引數。lua將函式的引數放在乙個叫arg的表中,除了引數以外,arg表中還有乙個域n表示引數的個數。例如,我們可以重寫print函式 printresult function print for i,v in i...
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...