zoukankan      html  css  js  c++  java
  • lua如何构造类

     1 function class(super, autoConstructSuper)
     2     local classType = {};
     3     classType.autoConstructSuper = autoConstructSuper or (autoConstructSuper == nil);
     4     
     5     if super then
     6         classType.super = super;
     7         local mt = getmetatable(super);
     8         setmetatable(classType, { __index = super; __newindex = mt and mt.__newindex;});
     9     else
    10         classType.setDelegate = function(self,delegate)
    11             self.m_delegate = delegate;
    12         end
    13     end
    14 
    15     return classType;
    16 end
    17 
    18 
    19 function new(classType, ...)
    20     local obj = {};
    21     local mt = getmetatable(classType);
    22     setmetatable(obj, { __index = classType; __newindex = mt and mt.__newindex;});
    23     do
    24         local create;
    25         create =
    26             function(c, ...)
    27                 if c.super and c.autoConstructSuper then
    28                     create(c.super, ...);
    29                 end
    30                 if rawget(c,"ctor") then
    31                     obj.currentSuper = c.super;
    32                     c.ctor(obj, ...);
    33                 end
    34             end
    35 
    36         create(classType, ...);
    37     end
    38     obj.currentSuper = nil;
    39     return obj;
    40 end
    41 
    42 
    43 function delete(obj)
    44     do
    45         local destory =
    46             function(c)
    47                 while c do
    48                     if rawget(c,"dtor") then
    49                         c.dtor(obj);
    50                     end
    51               
    52                     c = getmetatable(c);
    53                     c = c and c.__index;                   
    54                 end
    55             end
    56         destory(obj);
    57     end
    58 end
  • 相关阅读:
    使用requests爬虫简单获取知乎问题信息
    slam介绍
    move_base 控制机器人(2)
    move_base 控制机器人(1)
    Linux 常用命令-touch
    Linux 常用命令-rmdir
    Linux 常用命令-rm
    Linux 常用命令-mkdir
    Linux 目录结构
    Linux 常用命令-pwd
  • 原文地址:https://www.cnblogs.com/jadeboy/p/3959606.html
Copyright © 2011-2022 走看看