一、概述

用于定义一个表的行为

二、元表的使用

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
最后修改日期: 2023年10月28日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。