LUA 为表添加操作符

2019-11-11  本文已影响0人  菜鸟的笔记
--实例
-- 自定义计算表中最大键值函数 table_maxn,即计算表的元素个数
function table_maxn(t)
    local mn = 0
    for k, v in pairs(t) do
        if mn < k then
            mn = k
        end
    end
    return mn
end

-- 两表相加操作
-- mytable 第一个普通表;   setmetatable 是 mytable 的元表
mytable = setmetatable({ "壹","贰","叁" }, {
  -- __add:对应的运算符 '+'(当两个另一个表和mytable相加时自动调用) 。 mytable:表一,newtable:表二
  __add = function(mytable, newtable)
    --获取表二的长度
    for i = 1, table_maxn(newtable) do
        --把表二的数据添加到表一的后面
        table.insert(mytable, table_maxn(mytable)+1,newtable[i])
    end
    --返回新的表一
    return mytable
  end
})
-- 表二
secondtable = {"肆","伍","陆"}
-- 两个表相加
mytable = mytable + secondtable
        --遍历新的表一
        for k,v in ipairs(mytable) do
--输出结果
print(k,v)
end

--以上实例执行输出结果为:
--[[
1    壹
2    贰
3    叁
4    肆
5    伍
6    陆
--]]
模式 描述
__add 对应的运算符 '+'.
__sub 对应的运算符 '-'.
__mul 对应的运算符 '*'.
__div 对应的运算符 '/'.
__mod 对应的运算符 '%'.
__unm 对应的运算符 '-'.
__concat 对应的运算符 '..'.
__eq 对应的运算符 '=='.
__lt 对应的运算符 '<'.
__le 对应的运算符 '<='.

(注意:__是两个下划线)

原文连接https://www.runoob.com/lua/lua-metatables.html

上一篇 下一篇

猜你喜欢

热点阅读