metatable __eq
1 local ClassA = {} 2 ClassA.__index = ClassA 3 4 function ClassA.new(a, b) 5 local obj = {} 6 setmetatable(obj, ClassA) 7 8 obj:ctor(a, b) 9 return obj 10 end 11 12 function ClassA:ctor(a, b) 13 self.a = a 14 self.b = b 15 end 16 17 function ClassA:__eq(b) 18 return self.a == b.a 19 end
1 function Test1() 2 local a = ClassA.new(1, 2) 3 local b = ClassA.new(1, 3) 4 local c = ClassA.new(2, 2) 5 6 print("a==b:", a == b) --比较的时候, 会先调用metatable的__eq函数 7 print("a==c:", a == c) 8 end 9 Test1()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)