Lua元表和元方法

Lua元表和元方法


元表的作用:当使用到新表没有的属性或者函数,可以在元表中查找,类似继承
元表的设置:在Lua中新建table的时候不会创建元表。元表需要使用setmetatable(t)才能设置,在Lua中只能设置table类型的元表




元方法:预定义一些元方法,可以在新表数据进行算数运算和关系运算的时候能查找到对应处理的函数
一些预定义元方法的指定:
mt.__add = +
mt.__mul = -
mt.__tostring = print
mt.__eq = =
mt.__lt = <
mt.__le = <=


__index元方法:当访问一个新表不存在的字段,如果元表有指定该元方法的时候,会调用该元方法
作用:构造新表的时候只需要保存一份共享的原型数据,然后通过__index去获取新表没有但原型数据有的字段
 (也可以在构造新表的时候填充字段,但是这样会产生更大的开销)
类型:__index可以是一个函数也可以是一个table
绕过:可以使用rawget(t,i)的函数绕过改元方法去做一个不考虑元表的简单访问


__newindex元方法:
作用:用于更新新表不存在的属性的值
类型:当是函数:赋值的时候会调用这个元方法
 当是table:复制在这个table中
绕过:rawset(t,k,v)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值