Lua metatable变量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lua metatable变量相关的知识,希望对你有一定的参考价值。
我对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具有相同的metatable mb(相同的地址),我认为t1.a和t2.a是mb.a,它们是相同的变量。但是当给t1.a一个新值时,t2.a没有变化。当给mb.a一个新值时,t3就会改变!有人能解释一下它会发生什么吗?
答案
这就是__index
的工作方式。
如果t
有一个metatable m
,_index
条目指向表s
,那么当t.a
为零时,阅读s.a
解析为t.a
。
以上是关于Lua metatable变量的主要内容,如果未能解决你的问题,请参考以下文章