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