2009-10-10 35 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)

我同時改變一些變量的元表得到了這樣的錯誤。