首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lua metatable变量

Lua metatable变量
EN

Stack Overflow用户
提问于 2017-12-19 16:46:39
回答 1查看 77关注 0票数 1

我有一些问题要问Lua metatable。这是我的代码:

代码语言:javascript
复制
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)

这是输出:

代码语言:javascript
复制
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就改变了!有人能解释一下发生了什么吗?

EN

回答 1

Stack Overflow用户

发布于 2017-12-19 17:17:36

这就是__index的工作原理。

如果t有一个具有指向表s_index条目的元表m,那么当t.a为nil时,读取t.a将解析为s.a

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47883045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档