【发布时间】:2016-11-21 11:23:41
【问题描述】:
我正在尝试制作动态多维数组,但我在理解元表的工作方式时遇到了问题。就好像它有错误,它不知道如何获取和设置一个值。这是一个例子:
function test(A)
local G = {}
local mt = {}
mt.__index = function(self, i)
self[i] = setmetatable({}, mt)
return self[i]
end
setmetatable(G, mt)
G[1] = 10 -- adds 10
G[1][2][3] = 10 -- error, why?breaks on G[1]
--but when i do it like this
G[1][2][3] = 10 -- adds 10
G[1] = 10 -- erases whole table and adds 10
print(G[1][2][3]) -- error
end
【问题讨论】:
-
G[1][2][3] = 10和G[1] = 10如何在G中同时共存?print(G[1][2][3], G[1])应该显示什么? -
你是对的!我现在正在尝试使用“__newindex”在 G[1] 中放置一个表,以便它可以继续......失败了!
-
对不起,我不明白你想达到什么目的。值
111是否应该在以下代码中被覆盖:G[1]=111; G[1][2][3]=222? -
我试图多。矩阵并通过消除获得值...我有这个问题,我想了解,探索并使一切动态化...非常感谢,我现在明白为什么它不起作用了。
标签: multidimensional-array lua