我有一些问题要问Lua metatable。这是我的代码:
setmetatable(t1, mb)
setmetatable(t2, mb)
print("t1:", getmetatable(t1))
print("t2:", getmetatable(t2))
mb.__index = mb
print(t1.a)
t1.a = 2
print(t2.a)
mb.a = 3
print(t1.a)
print(t2.a)这是输出:
t1: table: 00D62D88
t2: table: 00D62D88
1
1
2
3输出显示t1和t2具有相同的元表mb(相同的地址),我认为t1.a和t2.a是mb.a,它们是相同的变量。但是当给t1.a一个新的值时,t2.a没有变化,当给mb.a一个新的值时,t3就改变了!有人能解释一下发生了什么吗?
发布于 2017-12-19 17:17:36
这就是__index的工作原理。
如果t有一个具有指向表s的_index条目的元表m,那么当t.a为nil时,读取t.a将解析为s.a。
https://stackoverflow.com/questions/47883045
复制相似问题