天天看點

Lua之可變參數

function funs(...)

Lua 函數可以接受可變數目的參數,和 C 語言類似,在函數參數清單中使用三點 ... 表示函數有可變的參數

function average(...)
   result = 0
   local arg={...}    --> arg 為一個表,局部變量
   for i,v in ipairs(arg) do
      result = result + v
   end
   print("總共傳入 " .. #arg .. " 個數")
   return result/#arg
end

print("平均值為",average(10,5,3,4,5,6))
           
--總共傳入 6 個數
--平均值為    5.5      

我們也可以通過 select("#",...) 來擷取可變參數的數量:

select("#",...)      

有時候我們可能需要幾個固定參數加上可變參數,固定參數必須放在變長參數之前

function fwrite(fmt, ...)  ---> 固定的參數fmt
    return io.write(string.format(fmt, ...))     
end      

通常在周遊變長參數的時候隻需要使用 {…},然而變長參數可能會包含一些 nil,那麼就可以用 select 函數來通路變長參數了:select('#', …)或者 select(n, …)

1.select('#', …) 傳回可變參數的長度

2.select(n, …) 用于通路 n 到 select('#',…) 的參數

function foo(...)  
        for i = 1, select('#', ...) do  -->擷取參數總數
            local arg = select(i, ...); -->讀取參數
            print("arg", arg);  
        end  
    end  
  
    foo(1, 2, 3, 4);  
           
lua