我正在尝试将少数阵列组合成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
答案 0 :(得分:3)
您的代码适用于旧版本的Lua。
在Lua 5.2中,arg
不再用于处理可变参数函数。相反,它是一个存储命令行参数的全局变量。
要处理可变参数函数,请使用...
,如下所示:
function foo(...)
for k, v in ipairs{...} do
--process
end
end
n
字段不再用于获取表长度。使用#t
获取序列t
的长度。