lua 函式的可變引數

2021-08-17 01:18:37 字數 1195 閱讀 7447

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