lua 中的元表

a={

age=0,

__tostring=function()

{

},

__call=function()

{

},

}

b={}

a.__index=a{}//将a表中的__index指向自己

setmetatable(a,b)//将b设置为a的元表;

__tostring

当子表a被当做字符串使用时会调用原表b中的__tostring方法,

__call

当子表a被当做字符串使用时会调用原表b中的__call方法

__index

当b.age是会先寻找b表中的age属性,没找到时会在原表中__index指向的表中去寻找

__newindex

b.name a,b表中都没有name属性,执行b.name="123"会在b表中生成属性name="123",如果设置

a.__newindex={} 会把name生成到__newindex指向的表中去

相关推荐
kaikaile19954 分钟前
C# 文件编码转换工具
开发语言·c#
沐雪轻挽萤18 分钟前
10. C++17新特性-保证的拷贝消除 (Guaranteed Copy Elision / RVO)
开发语言·c++
河阿里34 分钟前
Java-JWT令牌技术深度指南
java·开发语言
文静小土豆1 小时前
Java 应用上 K8s 全指南:从部署到治理的生产级实践
java·开发语言·kubernetes
西西弗Sisyphus1 小时前
Python 在终端里彩色打印
开发语言·python·print·彩色打印
Rsun045512 小时前
3、Java 工厂方法模式从入门到实战
java·开发语言·工厂方法模式
wjs20242 小时前
C++ 基本的输入输出
开发语言
码云数智-园园2 小时前
Python的GIL锁如何影响多线程性能?有哪些替代方案?
开发语言
咬_咬2 小时前
go语言学习(map)
开发语言·学习·golang·map
古城小栈2 小时前
rustup 命令工具,掌控 Rust 开发环境
开发语言·后端·rust