1

私は、すべての数値エントリに対して何かを行う可変数の引数を持つ関数を作成しようとしていました。だから私はこのようなものを思いついた:

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

しかし、これを実行すると、最初の非数値引数で停止します。どうしたの?

4

2 に答える 2

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
于 2013-03-25T12:31:34.170 に答える
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)
于 2013-03-25T14:20:21.733 に答える