您现在的位置:首页 --> 查看专题: metatable
基本类型如何使用元表 在lua里只能为表设置元表,而在c程序里面可以为基本类型进行元表操作,但上篇博文提到了普通类型的很多操作是不会走到元表,下面的例子针对数字类型,添加多种事件,只有部分事件会生效.下面的例子在c代码里对数字类型添加元表对__add,__len都设置事件.
表是如何调度到元表的呢,上篇博文的例子我们看到当键值未能被查找到之后会调用__index事件对应的函数.现在举一个”__add”事件来遍历重要环节的源码..... arith_op是个宏,会针对操作数进行类型判断,如果是数字类型就会立即进行相加,这就是为什么基本类型即便设置了加减等事件函数后还是没有效果,例如你为数字的加法设置了__add事件后数字相加不会掉用这个元表方法,后面会举一个例子.
lua metatable(以下简称元表)类似c++的operator overloads,可以对复合结构进行操作,在lua里最常见的就是对表的操作.举例来说,当两个表作加法操作的时候,Lua会检查表的元表中是否有”__add”事件是否对应一个函数(metamethod)。如果存在Lua会调用这个函数来执行一次表的加法操作. __index和__newindex是表常常要添加的事件,用于处理键值在表无法被查找到之后的处理.
[ 共3篇文章 ][ 第1页/共1页 ][ 1 ]
近3天十大热文
- [12] 产品设计之QQ邮箱登录页与淘宝登录页
- [10] Python连接 MySQL 数据库的超时问
- [8] 分布式系统的事务处理
- [8] 一个 VLA (可变长度数组)的实现
- [8] 浅述各平台系统交互设计的不同关注点
- [8] 关于不得不在python中使用代理访问网络的
- [8] 迈过社会化网络:互联网的新时代
- [8] 读书:谣言
- [8] 移动Web开发初学者指南
- [7] OpenGL中文字符的显示
赞助商广告