在Lua - arg.n错误中将少数数组合并为一个数组

时间:2014-11-22 08:30:42

标签: lua lua-table variadic-functions

我正在尝试将少数阵列组合成Lua中的单个阵列。 当我运行此脚本时,由于arg.n = nil值而导致错误,不应该arg.n将参数数量发送到函数中,需要遍历每个

任何建议?

function array_concat(...)

-- Combine Multiple Arrays 
-- Usage: combined =  array_concat(T1, T2, T3 ....) 

    local t = {}


    -- [ERROR] 10:26:35: line 49: attempt to get length of global 'arg' (a nil value)
    print (arg.n) 
    -- arg.n is nil why ?


    for i = 1, arg.n do
        local array = arg[i]
        if (type(array) == "table") then
            for j = 1, #array do
                t[#t+1] = array[j]
            end
        else
            t[#t+1] = array
        end
    end

    return t
end


local Array1 = {1,2} 
local Array2 = {3,4} 


local Combine =  array_concat(Array1, Array2)   


for k, v in pairs( Combine ) do
   print(k, v)
end

1 个答案:

答案 0 :(得分:3)

您的代码适用于旧版本的Lua。

在Lua 5.2中,arg不再用于处理可变参数函数。相反,它是一个存储命令行参数的全局变量。

要处理可变参数函数,请使用...,如下所示:

function foo(...)
  for k, v in ipairs{...} do
    --process
  end
end

n字段不再用于获取表长度。使用#t获取序列t的长度。