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指向的表中去

相关推荐
牛马1112 分钟前
Flutter CustomPaint
开发语言·前端·javascript
重庆兔巴哥11 分钟前
Java环境变量配置不成功,会有什么症状?
java·开发语言
大黄说说12 分钟前
不可变数据:函数式编程的基石与双刃剑
开发语言
不只会拍照的程序猿14 分钟前
《嵌入式AI筑基笔记02:Python数据类型02,从C的“硬核”到Python的“包容”》
开发语言·笔记·python
无限进步_14 分钟前
深入解析list:一个完整的C++双向链表实现
开发语言·c++·git·链表·github·list·visual studio
重庆兔巴哥27 分钟前
如何安装和配置Java开发环境(JDK)?
java·开发语言
biubiuibiu34 分钟前
JavaScript核心概念深度解析:位运算与短路逻辑
开发语言·javascript·ecmascript
2401_8496448536 分钟前
C++代码重构实战
开发语言·c++·算法
葡萄城技术团队37 分钟前
Hurley:用 Rust 打造的高性能 HTTP 客户端 + 压测工具
开发语言·http·rust
2301_815482931 小时前
C++与WebAssembly集成
开发语言·c++·算法