Lua 笔记15

元表和元方法。

1. 用例一,两个表相加。

  机理描述:先检查两者之一是否有元表( metatable )且该元表中是否有 __add 字段。 如果找到了 该字段,就调用该字段对应的值,即所谓的元方法( metamethod ) (是一个函数)。

2. 元表只能给出预先定义的操作集合的行为,比较受限。

3. 每一个值都可以有元表。

4. 创建新表时不带元表。创建元表,获取元表两个方法,setmetatable和getmetatable 

5. 只能为表设置元表。如果要为其他类型的值设置元表,则必须通过 C 代码或调试库完成(该限制存在的主要原因是为了防止过度使用对某种类型的所有值生效 的元表。 Lua 语言老版本中的经验表明,这样的全局设置经常导致不可重用的代码 )。 

6. 字符 串标准库为所有的字符串都设置了同一个元表,而其他类型在默认情况中都没有元表。举例,

 7. 元方法常见:算术运算符、位运算符、关系运算符的元方法和__index,__newindex。

原文地址:https://www.cnblogs.com/gaara-zhang/p/13222982.html