前言
在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(小于等于<=)
- 普通运算:
元表怎么用
先来看一段程序吧~