前言
在lua的学习过程当中,元表metatable的概念及用法是常见的障碍之一
元表,在其它lua杂谈等都提到过,是一种描述lua数据的属性以及行为的表。虽然官方给了set、account等例子详细讲解了metatable,但总还是缺乏些提炼。为了干翻这个痛点,这次,果断强上metatable的精髓。毕竟,犹豫就会败北~
元表有什么
我们首先就会有疑问:通过哪些属性指标,可以描述lua的数据呢?通过官方手册,我们可以很容易地找到答案。
在lua中,我们把元表中的key,也就是描述数据的属性指标,称之为event
我们可以把所有的event分为两组(括号中代表lua里的语法):
描述其基础性质的:
- 属性索引:
__index,__newindex - 长度:
__len(#) - 函数形式:
__call - 字符串形式:
__tostring
- 属性索引:
描述其运算的:
- 普通运算:
__add(加+),__sub(减-),__mul(乘*),__div(除/),__mod(模%),__pow(乘方^),__unm(负-),__idiv(取整除//) - 位运算:
__band(与&),__bor(或|),__bxor(异或~),__bnot(非~),__shl(左移<<),__shr(右移>>) - 关系运算:
__concat(联结..),__eq(全等==),__lt(小于<),__lte(小于等于<=)
- 普通运算:
元表怎么用
先来看一段程序吧~
