使用可变数量的参数处理Lua函数中的参数

时间:2013-03-25 12:03:13

标签: lua lua-table

我试图编写一个带有可变数量参数的函数,这些参数对所有数字条目都有效。所以我想出了类似的东西:

function luaFunc (...)
   for i,v in ipairs{...} do
      if type(v)=='number' then
         --do something
      end
   end
end

但是当我运行它时,它会在第一个非数字参数上停止。这个问题是什么?

2 个答案:

答案 0 :(得分:1)

local function luaFunc (...)
   for i = 1, select('#',...) do
      local v = select(i,...)
      if type(v)=='number' then
         --do something
         print(v)
      end
   end
end
luaFunc (1,'a',nil,2)     ]

-- Output
1
2

答案 1 :(得分:1)

试试这个:

function luaFunc (...)
   local t=table.pack(...)
   for i=1,t.n do
      local v=t[i]
      if type(v)=='number' then
         print(i,v)
      end
   end
end

luaFunc(10,20,"hello",40,nil,60,print,99)