如何在lua中创建动态矩阵

时间:2018-02-14 09:36:52

标签: lua

我正在尝试使用lua中的某些矩阵作为我的地下城生成器。基本上我会有矩阵[x] [y],里面的结构将存储每个“房间”的信息。但由于它是一个发电机,我不知道我将拥有多少房间,我知道的唯一方法就是制作这样的东西:

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

所以问题是,有没有办法创建一个动态增加大小的矩阵,因为我向它添加数据?因为地牢会像树枝那样会有空格。

1 个答案:

答案 0 :(得分:2)

来自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