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)
元表的作用:当使用到新表没有的属性或者函数,可以在元表中查找,类似继承
元表的设置:在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
- Lua 中的元表和元方法
- Lua中的元表和元方法
- Lua中的元表和元方法
- Lua中的元表和元方法
- Lua中的元表和元方法
- Lua中的元表和元方法
- Lua中的元表和元方法
- Lua元表和元方法
- Lua中的元表和元方法
- Lua中的元表和元方法
- lua中的元表和元方法
- Lua 元表和元方法
- Lua 元表 元方法
- Lua学习笔记--元表和元方法
- LUA学习(七) 元表和元方法
- Lua元表和元方法(转载)
- lua中的元表和元方法解析
- Lua元表与元方法介绍
- Nginx+Tomcat+Memcached集群Session共享
- hdu 1247 Hat’s Words Trie树(+测试数据)
- Kubernetes技术分析之监控
- fork()函数详解
- 键盘输入三个数,输出其中最大的数
- Lua元表和元方法
- Cocos2d-x 3.6 项目实战---贪吃蛇(4)
- public String toString(){ return 自定义字符串; }有什么意义
- 数组队列
- thinkphp添加数据add方法
- 安装SAP Business One对软硬件有哪些要求
- 为什么浏览器User-agent总是有Mozilla字样
- UEditor (JSP 1.4.3版本) 集成到ssh框架中
- BZOJ 3052 [wc2013]糖果公园 树上莫队