【Lua】元表常用属性
__index
触发条件:访问不存在的字段
参数:(table,key)
返回值:返回替代值
使用场景:实现默认值、继承、代理
__newindex
触发条件:设置不存在的字段
参数:(table,key,value)
返回值:无(抛错)
使用场景:拦截写操作、实现只读
__add
触发条件:实现自定义表的相加
参数:(a,b)
返回值:任意结果
使用场景:自定义表相加
__sub
触发条件:使用 -
参数:(a,b)
返回值:任意结果
使用说明:自定义表相减
__mul
触发条件:使用 *
参数:(a,b)
返回值:任意结果
使用说明:自定义表相乘
__div
触发条件:使用 /
参数:(a,b)
返回值:任意结果
使用说明:自定义表相除
__mod
触发条件:使用 %
参数:(a,b)
返回值:任意结果
使用说明:自定义取模
__pow
触发条件:使用 ^
参数:(a,b)
返回值:任意结果
使用说明:自定义幂运算
__unm
触发条件:使用负号行为,例如-a
参数:(a)
返回值:任意结果
使用说明:自定义负号行为
__concat
触发条件:使用..拼接
参数:(a,b)
返回值:字符串
使用说明:自定义拼接行为
__len
触发条件:使用#运算符
参数:(a)
返回值:整数
使用说明:自定义长度
__eq
触发条件:使用==比较
参数:(a,b)
返回值:布尔值
使用说明:自定义相等判断
__lt
触发条件:使用<比较
参数:(a,b)
返回值:布尔值
使用说明:自定义小于判断
__le
触发条件:使用<=比较
参数:(a,b)
返回值:布尔值
使用说明:自定义小于等于判断
__call
触发条件:表像函数一样被调用时
参数:(table, ...)
返回值:任意
使用说明:让表可以像函数一样调用
__tostring
触发条件:使用 tostring() 或 print
参数:(table)
返回值:字符串
使用说明:自定义输出格式
__metatable
触发条件:防止修改元表
参数:字符串或任意值(不可是函数)
返回值:任意
使用说明:隐藏元表