特定参数 运算符重载
--运算符重载
father={
--__add相当于运算符重载,当子表使用+运算符时 会调用该方法
--加
__add= function(a1,a2)
return a1.num+a2.num
end,
--减
__sub=function(a1,a2)
return a1.num-a2.num
end,
--乘
__mul=function(a1,a2)
return a1.num*a2.num
end,
--除
__div =function(a1,a2)
return a1.num/a2.num
end,
--取余
__mod = function(a1,a2)
return a1.num%a2.num
end,
--幂运算
__pow = function(a1,a2)
return a1.num^a2.num
end,
--运算符==
__eq = function(a1,a2)
return true
end,
--<
__lt = function(a1,a2)
return true
end,
--运算符<=
__le = function(a1,a2)
return false
end,
--运算符..
__concat = function(a1,a2)
return '666'
end
}
son ={
num=1
}
setmetatable(son,father);
son2 ={
num=2
}
setmetatable(son2,father);
print(son+son2)
print(son-son2)
print(son*son2)
print(son/son2)
print(son%son2)--数A/数B,A小于B,商为0,余数就是它自己 1%2 余数1
print(son^son2)
--如果要用条件运算符 比较两个对象
--这两个对象的元表必须一致 才能准确调用方法
print(son==son2)
print(son<son2)
print(son<=son2)
print(son..son2)
特定操作 __index 和 __newIndex
__index
当子表中 找不到某个属性时
会到元表中 __index指定的表去找属性
--__index
meta6 = {
age = 1,
__index = { age=2 }
}
myTable6 = {}
setmetatable(myTable6,meta6)
print(myTable6.age)