【问题标题】:Lua metatable variableLua 元表变量
【发布时间】:2018-06-01 15:45:37
【问题描述】:

我有一些关于 Lua 元表的问题... 这是我的代码:

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 是变化的! 有人能解释一下发生了什么吗?

【问题讨论】:

    标签: lua lua-table


    【解决方案1】:

    __index 就是这样工作的。

    如果t 有一个元表m 和一个_index 条目指向一个表s,那么读取t.a 将解析为s.a t.a 为零。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-20
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-10
      相关资源
      最近更新 更多