Lua元表(相当于子表的使用指南)的元方法分析

__index:当索引子表中不存在的index时,就会到子表的元表中__index这个table表中去索引,或者调用__index这个函数

如果是函数则会传入默认参数(子表,索引的index)

__newindex:当给子表中不存在的index赋值时,就会在子表的元表中__newindex这个table表中去创建对应的index和值,或者调用__newindex这个函数

如果是函数则会传入默认参数(子表,索引的index,值)

__call:当子表被当作函数来调用时,就会调用子表的元表中__call这个函数,__call的参数形式是第一个参数固定为子表,后续参数自定义也可以写成不定参数

__tostring:当把子表当做字符串输出的时候会调用元表的这个方法,方法必须要有返回值

rawget:无视子表对应元表的__index,返回子表中对应index的值

rawset:无视子表对应元表的__newindex,对子表中对应的index赋值

当两个table进行运算时会按照运算顺序调用对应table元表中对应的运算函数,运算函数大部分会传入默认参数(第一个table,第二个table)

__add(+),__sub(-),__mul(*),__div(/),__mod(%),__pow(^),__unm(对应的table取相反数(-)),__concat(..),__len(对应的table取长度(#)),

__eq(==),__lt(<),__le(<=)等等

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值