一、概述
用于定义一个表的行为
二、元表的使用
1、设置元表
--将myMetatable设置为myTable的元表,myMetatable是元表
setmetatable(myTable, myMetatable)
2、获取元表
--获取myTable的元表
myTable.getmetatable()
三、元方法
0、元方法的基本设置模式
source = {
__add = function(a, b)
return a.value1 + b.value1
end
}
t1 = {
value1 = 10
}
setmetatable(t1, source)
t2 = {
value1 = 20
}
setmetatable(t2, source)
print(t1 + t2)
1、算数相关的元方法
- __add:加
- __mul:乘
- __sub:减法
- __div:除法
- __idiv:floor除法
- __unm:负数
- __mod:取模
- __pow:幂运算
2、关系相关的元方法
- __eq:等于
- __lt:小于
- __le:小于等于
3、元表相关的元方法
- __metatable:重新设置元表是会调用这个方法,可以防止表格更改元表,或者获取元表的数据
4、表相关的元方法
- __index:当访问不存在的字段时返回指定的返回值
- __newindex:当为一个表中不存在的字段设置值的时候调用这个方法
--为一个表设置默认值,为tablea的默认值设置为0
SetDefalut = function(t, d)
local dm = {
__index = function()
return d
end
}
setmetatable(t, dm)
end
tablea = {}
tablea.x = 10
print(tablea.x, tablea.y)
SetDefalut(tablea, 0)
print(tablea.x, tablea.y)
5、打印
- __tostring
留言