Lua复制方式创建对象表。

来源:互联网 发布:傲盾网络加速器注册 编辑:程序博客网 时间:2024/06/07 20:14
-- 这里是用来复制目标表的所有键值的,相当于在一个空表里装好对象表中的所有内容,然后返回该表。local function Clone(obj)  local object = {}  for key, var in pairs(obj) do    object[key] = var  end  return objectend-- 这里是用来把tab中的表内容,累加到target表中,也就是说,target表中也包括了tab中的表内容,相当--于继承local function CopyObj(target,tab)  for key, var in pairs(tab) do    target[key] = var  end  return targetendHuman = {}Human.new = function(name,age,height,desc)   local self = Clone(Human)  self.Name = name  self.Age = age  self.Height = height  self.Desc = desc  return selfendHuman.PrintInfo = function(self)  print("Human name is "..self.Name,"Age:"..self.Age,"Height:"..self.Height,"Desc:"..self.Desc)endHuman.Walk = function(self)  print(self.Name.." is walk.")endlocal T1 = Human.new("T1",12,22,"www.com.cn")T1:PrintInfo()T1:Walk()local T2 = {}T2 = CopyObj(T2,T1)T2.Name= "T2"T2:Walk()local Mjt = {}Mjt.new = function(name,age,height,desc)    local self = Human.new(name,age,height,desc)    CopyObj(self,Mjt)    return selfend-- 子类自有的方法Mjt.Programmer = function(self)  print("I'am Programming.")endlocal me = Mjt.new("Pants",80,20,"cabcab")me:PrintInfo()-- 重写父类方法,父类此方法不被影响me.Walk = function (self)  print("Dance,Dance,Dance.")endme:Walk()me:Programmer()T2:Walk()
0 0
原创粉丝点击