如何在 Lua 中创建动态矩阵

我正在尝试在我的地牢生成器中使用一些 Lua 矩阵。基本上,我将有一个矩阵 [x][y],其中里面的结构将存储每个“房间”的信息。但由于它是一个生成器,我不知道我会有多少个房间,我唯一知道的方法就是做这样的事情:

mat = {}
for i = 0, 10 do
    mat[i] = {}
    for j = 0, 10 do
        mat[i][j] = 1
    end
end

所以问题是,是否有一种方法可以创建一个动态增加大小的矩阵,因为地牢会像树枝一样展开,所以会有空格。

点赞
用户6834680
用户6834680

从 Lua 编程书:

此外,表格没有固定的大小;您可以动态添加任意数量的元素到表格中。

为了处理访问不存在的表格成员以避免索引为 nil 值而导致的错误消息,您可以使用一个实现了 __index 元方法的元表。

在下面的示例中,Lua 将在您的表格中插入一个空表格,无论何时该表格还不存在时。

有关详细信息,请参见 https://www.lua.org/manual/5.3/manual.html#2.4

local mt_2D = {
   __index =
      function(t, k)
         local inner = {}
         rawset(t, k, inner)
         return inner
      end
}
local array2D = setmetatable({}, mt_2D)

array2D[2][5] = 'it works'

print(array2D[2][5])    -->  it works
2018-02-14 10:34:04