【问题标题】:Combine few arrays into one array in Lua - arg.n error在 Lua 中将几个数组合并为一个数组 - arg.n 错误
【发布时间】:2014-11-23 02:08:33
【问题描述】:

我试图在 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

【问题讨论】:

    标签: lua lua-table variadic-functions


    【解决方案1】:

    您的代码可以在旧版本的 Lua 中运行。

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

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

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

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

    【讨论】:

    • 或者更好:for i = 1, select( '#', ... ) do local v = select( i, ... ) --[[ process ]] end
    • 用老方法来做,你可以说local arg = table.pack(...)
    猜你喜欢
    • 2021-07-16
    • 2017-10-03
    • 1970-01-01
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    • 1970-01-01
    • 2015-11-11
    • 2020-06-22
    相关资源
    最近更新 更多