1. 程式人生 > >Lua之可變引數

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);