Lua 變參處理之select函式

2021-08-02 04:54:43 字數 647 閱讀 3602

在lua程式設計中,如果想要迭代處理函式的變參,可以用將所有的變參收集到乙個table中。但是有時變參中可能含有非法的

nil,我們可以用

select

函式把非法的nil引數剔除。

示例

function foo(...)

for i = 1, select('#', ...) do

local arg = select(i, ...);

if arg then

print("arg"..i, arg);

endend

end 

foo(1,"a",nil, );

--[[ --output

arg11

arg2a

arg4table: 0x00021d88

]]

其中,select

函式中的第乙個引數為

selector

,第二個引數為傳入處理的變參。呼叫的時候,如果

selector

的值為數字n,那麼select函式返回變參中的第n個引數,如果

selector

的值為'#',

select

函式會返回可變引數的總數目。

Lua 變參處理之select函式

在lua程式設計中,如果想要迭代處理函式的變參,可以用將所有的變參收集到乙個table中。但是有時變參中可能含有非法的nil,我們可以用select函式把非法的nil引數剔除。function foo for i 1,select do local arg select i,if arg then ...

Lua 可變引數之arg與select

1 function testfunc 2 local arg lua 5 2以後不再支援預設arg引數,與.之間要有空格 3 print 輸入的引數個數 arg 4for i,v in ipairs arg do 5print v 6end 7end 8 print 9function testf...

C 中變參函式的處理方式

c 函式中變化的引數用 表示。變化的引數依舊按照c函式傳參的規則入棧,即從右往左依次入棧,保證引數從左往右位址依次公升高。解析變參的主要思想是 將變參緩衝區像容納了不同型別的陣列 當然實際的陣列裡的變數型別不可能是不同的 一樣對待。獲取變參緩衝區首位址,按已知型別進行強轉取值,跳過該值,取出下乙個值...