将 Lua 中的几个数组合并成一个数组 - arg.n 错误

我正在尝试将几个数组组合成一个新数组在 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
点赞
用户1009479
用户1009479

你的代码在较旧版本的 Lua 中可以工作。

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

要处理可变参数函数,请像这样使用 ...

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

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

2014-11-22 08:45:32