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()