Lua类的实现
来源:互联网 发布:淘宝怎么联系客服啊 编辑:程序博客网 时间:2024/05/21 14:52
详细参见:lua class wiki和lua class github
-- class.lua-- Compatible with Lua 5.1 (not 5.0).function class(base, init) local c = {} -- a new class instance if not init and type(base) == 'function' then init = base base = nil elseif type(base) == 'table' then -- our new class is a shallow copy of the base class! for i,v in pairs(base) do c[i] = v end c._base = base end -- the class will be the metatable for all its objects, -- and they will look up their methods in it. c.__index = c -- expose a constructor which can be called by <classname>(<args>) local mt = {} mt.__call = function(class_tbl, ...) local obj = {} setmetatable(obj,c) if init then init(obj,...) else -- make sure that any stuff from the base class is initialized! if base and base.init then base.init(obj, ...) end end return obj end c.init = init c.is_a = function(self, klass) local m = getmetatable(self) while m do if m == klass then return true end m = m._base end return false end setmetatable(c, mt) return cend
require 'class'Animal = class(function(a,name) a.name = nameend)function Animal:__tostring() return self.name..': '..self:speak()endDog = class(Animal)function Dog:speak() return 'bark'endCat = class(Animal, function(c,name,breed) Animal.init(c,name) -- must init base! c.breed = breed end)function Cat:speak() return 'meow'endLion = class(Cat)function Lion:speak() return 'roar'endfido = Dog('Fido')felix = Cat('Felix','Tabby')leo = Lion('Leo','African')D:\Downloads\func>lua -i animal.lua> = fido,felix,leoFido: bark Felix: meow Leo: roar> = leo:is_a(Animal)true> = leo:is_a(Dog)false> = leo:is_a(Cat)true
0 0
- lua类的实现
- Lua类的实现
- Lua类的实现
- lua学习:lua中“类”的实现
- lua学习:lua中“类”的实现
- lua学习:lua中“类”的实现
- lua学习:lua中“类”的实现
- lua简单类的实现
- Lua中类的实现
- lua中“类”的实现
- lua实现类的继承
- lua中“类”的实现
- Lua实现类的封装
- lua中“类”的实现
- Lua的类Class实现
- lua、quick-cocos2d-x(lua)、lua基本语法、lua类的实现、lua类的继承【新手必读】
- cocos-lua学习笔记(五)cocos2d-Lua类的实现
- Lua中实现类的原理 值得一看
- 可变参数
- Docker实践 - 使用maven插件自动部署web应用至Docker容器的tomcat
- WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping。
- 将整数分解成若干个质因数.
- matlab 产生随机数汇总
- Lua类的实现
- 5-28 猴子选大王 ,即约瑟夫环问题
- ECMAScript 6(4)变量的解构赋值
- 深入理解HTTP Session
- Filter和拦截器的区别
- Fedora配置JDK环境
- [SPOJ UCV2013E Greedy Walking]数学、统计
- 组合模式(结构型)
- iOS 文字 大小适配屏幕