Lua元表的定义和使用
在Lua table中我们可以访问对应的key来得到value值,但是却无法对两个table进行操作。
因此Lua提供了元表(Metatable),允许我们改变table的行为,每个行为关联了对应的元方法。例如,使用元表我们可以定义Lua如何计算两个table的相加操作a+b。
当Lua试图对两个表进行相加时,先检查两者之一是否有元素,之后检查是否有一个叫”__add”的字段,若找到,则调用对应的值。”__add”等即时字段,其对应的值(往往是一个函数或是table)就是”元方法”。
我的理解就是元表对普通表做了一个行为的扩展,元表的话可以定义一些操作,比如说:这个表跟别的表进行加法操作,访问不存在的索引的这个表的操作,输出这个表的操作等。
跟元表有关的两个重要函数:
①setmetatable(table,metatable)(只能用用于table,如果元表(metatable)中存在__metatable键值,setmetatable会失败)
②getmetatable(table)(用于任何对象,如果元表(metatable)中存在__metatable键,则返回__metatable的值)
输出结果