今日学习
Lua元表元方法
个人理解 元表就是将对Lua中Table的一个拓展 在元表中的元方法就是类似对Table行为进行一个扩大
在 Lua table 中我们可以访问对应的key来得到value值,但是却无法对两个 table 进行操作。
因此 Lua 提供了元表(Metatable),允许我们改变table的行为,每个行为关联了对应的元方法。(菜鸟)
元表和元方法的关系就是其实就是一个键值对应的关系
__add 对应加法 __index对应索引 还有很多(建议百度)
个人理解 所以说白了 元表也是一个普通的lua表 只是我们通过设置他的元方法让他与众不同 转而言之 元表是可以层层嵌套的 虽然一个表似乎不能拥有多个元表 但是可以拥有一个有元表的元表
而rawget(table, Index)方法就是在不触发元方法的情况下获取值的方法,因为在lua取值赋值的过程中,会层层索引,先查自己这个表有无对应的值,再查元表,再查元表的元表…最后返回nil,所以在项目中,我们也不太推荐使用元表继承太多,因为这样的搜索和赋值效率都非常低。
最后附带一个自己写的测试代码
下面展示一些 内联代码片
。
TestMetaTable()
local myTab