在Lua中将二维数组传递给函数

可以将二维数组作为参数传递给函数吗?

我像这样初始化了一个数组:

tab={}
for i=1, 10 do
    tab[i]={}
    for z=1, 10 do
        tab[i][z]= 0
    end
end

我有这样一个函数:

function foo(data)
    ...
    x = data[i][z] -- 这里出错了
    ...
end

它出现了错误消息 attempt to index field '?' (a nil value)

所有变量都声明并初始化。

原文链接 https://stackoverflow.com/questions/1549181

点赞
stackoverflow用户108130
stackoverflow用户108130

如果初始化得当,你的代码应该能够正常工作。

例如,下面的代码示例将输出3:

function foo(data)
  local i, z = 1, 2
  print(data[i][z])
end

local tab={}
for i=1, 10 do
  tab[i]={}
  for z=1, 10 do
    tab[i][z]= i + z
  end
end

foo(tab)
2009-10-10 22:23:53
stackoverflow用户88888888
stackoverflow用户88888888

也许你可以分享剩下的代码?以下代码没有错误:

tab={}
for i=1, 10 do
    tab[i]={}
    for z=1, 10 do
        tab[i][z]= 0
    end
end

function foo(data)
    print(data[3][2])
end

foo(tab)
2009-10-12 14:13:14
stackoverflow用户189368
stackoverflow用户189368

在改变某个变量的元表时,我遇到了这样的错误消息:尝试索引字段'?'(一个nil值)。

2009-10-13 19:40:44