2009-10-10 63 views
2

可以将2d数组作为参数传递给函数吗? 我初始化这样的数组:传递2d数组以在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] -- here i got error 
    ... 
end 

的给了错误信息attempt to index field '?' (a nil value)

所有变量的声明和初始化。

回答

4

如果代码初始化正确您的代码应该工作。

例如,下面的代码示例将输出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) 
+0

请注意,制作i和z局部变量是个好主意。 – 2009-10-11 18:19:56

1

也许你可以分享你的代码的其余部分?没有错误以下运行:

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) 
0

The gave the error message attempt to index field '?' (a nil value)

我同时改变一些变量的元表得到了这样的错误。