Arrays 错误:main.lua:22:尝试索引字段'';(零值)

Arrays 错误:main.lua:22:尝试索引字段'';(零值),arrays,lua,lua-table,Arrays,Lua,Lua Table,我试图在多维表中获取一些0和1,但无法使其工作。我已经搜索了很多帖子,但我找不到解决的办法。代码如下: generatedTerrain={ {0,0,0,0,0}, {0,0,0,0,0} } x=0 y=0 function mapGen() for y=1,67 do generatedTerrain[y]={} for x=1,89 do generatedTerrain[x

我试图在多维表中获取一些0和1,但无法使其工作。我已经搜索了很多帖子,但我找不到解决的办法。代码如下:

    generatedTerrain={
{0,0,0,0,0},
{0,0,0,0,0}
}
x=0
y=0

    function mapGen()
        for y=1,67 do
            generatedTerrain[y]={}
            for x=1,89 do
                generatedTerrain[x][y] = math.random(0,1) --This doesn't work
            end
        end
    end
mapGen()
end

您已经反转了表中的x和y索引,因此在其中创建了67个空表,但是在下一个循环中,您尝试从1访问到89

,正如Daniel所说,在存储/访问元素时,您需要更改
x
y
索引的顺序。这应该起作用:

local generatedTerrain={}
function mapGen()
  for y=1,67 do
    generatedTerrain[y]={}
    for x=1,89 do
      generatedTerrain[y][x] = math.random(0,1) --<-- changed order or x,y
    end
  end
end
mapGen()
localgeneratedterrain={}
函数mapGen()
对于y=1,67 do
generatedTerrain[y]={}
对于x=1,89 do

generatedTerrain[y][x]=math.random(0,1)--我要做的是得到表67x89。但是我以前从未使用过多维表……顺便说一下,您不需要在这个细节中初始化generatedTerrain(初始化为空表{})也不需要x和y。事实上,当局部值(如for循环隐式创建)足够时,您正在使Lua创建x和y作为全局值。