Lua元表和元方法

来源:互联网 发布:好听的淘宝昵称小清新 编辑:程序博客网 时间:2024/04/29 02:27
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)



0 0
原创粉丝点击