将表格转换为...并返回它。

你好,我想知道如何将表格转换为...并将其返回。

function GetArgsNormal(...)
    return ...;
end
local a,b,c=GetArgsNormal(1,2,3); --这个起作用
print("a b c:",a,b,c);
function GetArgsTable(t,...)
    for i,v in pairs(t)do
        ({...})[i]==v;
        end
    return ...;
end
local d,e,f=GetArgsTable({1,2,3},nil); --结果:d=nil,e=nil,f=nil
print("def:",d,e,f);

我已经尝试了我能想到的所有可能的方式,但都没有成功:(

请有人能帮我吗?

是的,请回答而不是投票反对!

点赞
用户1847592
用户1847592
local d,e,f = unpack({1,2,3}); --result: d=1, e=2, f=3

function f()
   local t = {}
   -- fill table t
   return unpack(t)
end

本地变量def接收来自于{1,2,3}的值;结果为:d=1e=2f=3

定义函数f(),内部创建一个空表t,并让这个表充满了数值;最终使用unpack()将表t中的数值返回。

2013-04-22 16:37:44
用户2328287
用户2328287

你需要谨慎处理 args 中的 'holes'

function GetArgsTable(t,...)
  local argc, argv = select("#", ...), {...}
  -- #argv ~= argc
  -- unpack(argv) ~= ...

  -- 假设 t 是数组
  for i,v in ipairs(t) do
    argc = argc + 1
    argv[argc] = v;
  end

  return unpack(argv, 1, argc); -- 使用显式的数组大小
end

print(GetArgsTable({1,2}, nil,'hello', nil)) -- nil hello nil 1 2

或者你可以查看 lua-vararg 库。

2013-04-28 07:02:12