我正在尝试使用lua中的某些矩阵作为我的地下城生成器。基本上我会有矩阵[x] [y],里面的结构将存储每个“房间”的信息。但由于它是一个发电机,我不知道我将拥有多少房间,我知道的唯一方法就是制作这样的东西:
mat = {}
for i = 0, 10 do
mat[i] = {}
for j = 0, 10 do
mat[i][j] = 1
end
end
所以问题是,有没有办法创建一个动态增加大小的矩阵,因为我向它添加数据?因为地牢会像树枝那样会有空格。
答案 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