【问题标题】:Error: main.lua:22: attempt to index field '?' (a nil value)错误:main.lua:22:尝试索引字段“?” (零值)
【发布时间】:2013-08-29 09:00:08
【问题描述】:

我试图在多维表中获取一些 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

【问题讨论】:

  • 顺便说一下,你不需要在这个细节中初始化 generatedTerrain(初始化为空表 {} 就足够了),也不需要 x 和 y。事实上,当局部值(因为 for 循环将隐式创建)就足够了时,您正在让 Lua 创建 x 和 y 作为全局值。

标签: arrays lua lua-table


【解决方案1】:

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

【讨论】:

  • 我想要做的是获得 67x89 的表格。但我之前从未使用过多维表...
【解决方案2】:

正如 Daniel 所说,您在存储/访问元素时需要更改 xy 索引的顺序。这应该有效:

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

【讨论】:

    猜你喜欢
    • 2014-03-26
    • 2012-03-12
    • 2020-05-28
    • 1970-01-01
    • 2021-04-26
    • 2012-10-23
    • 2019-10-10
    相关资源
    最近更新 更多