print("*******元表********")
print("*******元表概念********")
print("*******设置元表********")
meta={}
myTable={}
setmetatable(myTable,meta)
print("*******特定操作********")
print("*******特定操作-_tostring********")
meta2={
__tostring=function ( t)
return t.name
end,
}
myTable2={
name="小明"
}
setmetatable(myTable2,meta2)
print(myTable2)
print("*******特定操作-_call********")
meta3={
__tostring=function ( t)
return t.name
end,
__call = function(a,b)
print(a)
print(b)
print("小明23333")
end
}
myTable3={
name="小明"
}
setmetatable(myTable3,meta3)
myTable3()
myTable3(1)
print("*******特定操作-运算符重载********")
meta4={
__add = function ( t1,t2 )
return t1.age+t2.age
end,
__sub = function ( t1,t2 )
return t1.age-t2.age
end,
__mul = function ( t1,t2 )
return t1.age*t2.age
end,
__div = function ( t1,t2 )
return t1.age/t2.age
end,
__mod = function ( t1,t2 )
return t1.age%t2.age
end,
__pow = function ( t1,t2 )
return t1.age^t2.age
end,
__eq = function ( t1,t2 )
return t1.age==t2.age
end,
__lt = function ( t1,t2 )
return t1.age<t2.age
end,
__le = function ( t1,t2 )
return t1.age<=t2.age
end,
__concat = function ( t1,t2 )
return t1.age..t2.age
end,
}
myTable4={age=1}
setmetatable(myTable4,meta4)
myTable5={age=2}
setmetatable(myTable5,meta4)
print(myTable4+myTable5)
print(myTable4-myTable5)
print(myTable4*myTable5)
print(myTable4/myTable5)
print(myTable4^myTable5)
print(myTable4==myTable5)
print(myTable4<myTable5)
print(myTable4<=myTable5)
print(myTable4..myTable5)
print("*******特定操作-_index和_newIndex********")
meta6={
}
meta6.__index={age=2}
myTable6={}
setmetatable(myTable6,meta6)
print(getmetatable(myTable6))
print(myTable6.age)
print(rawget(myTable6,"age"))
meta7={}
meta7.__newindex={}
myTable7={}
setmetatable(myTable7,meta7)
myTable7.age=1
print(myTable7.age)
rawset(myTable7,"age",2)
print(myTable7.age)