lua类库 middleclass学习笔记
middleclass使在lua中面象对象变的简单
抄了一遍他的示例代码运行着试了试,基本懂了
local class = require 'middleclass'--类的继承 Person = class('Person') --定义一个Person类 function Person:initialize(name) --构造函数self.name = name endfunction Person:speak() --方法print("Hi,i am " ..self.name .. ".") endAgedPerson = class('AgedPerson',Person) --子类 AgedPerson.static.ADULT_AGE = 18 --类成员function AgedPerson:initialize(name,age) --子类构造 Person.initialize(self,name)self.age = age endfunction AgedPerson:speak() --子类方法Person.speak(self) --子类调用父类方法if(self.age < AgedPerson.ADULT_AGE) thenprint("i am underaged")elseprint("i am an adult")end endlocal p1 = AgedPerson:new('张东升',13) --定义一个子类对象 local p2 = AgedPerson:new('无量',21) p1:speak()--Mixins 这种特性可以在不同的类之间共享一些函数, --可以是不同的基类 HasWings = {fly = function(self)print('flap flap i am a ' .. self.class.name)end }Animal = class('Animal') --动物类 Insect = class('Insect',Animal) --昆虫类 Worm = class('Worm',Insect) --虫子 Bee = class('Bee',Insect) --蜜蜂 Bee:include(HasWings) --增加类成员 Mammal = class('Mammal',Animal) --哺乳动物 Fox = class('Fox',Mammal) --狐狸 Bat = class('Bat',Mammal) --蝙蝠 Bat:include(HasWings) -- local bee = Bee() local bat = Bat() bee:fly() bat:fly()--下在这种方法 DrinksCoffe = {} function DrinksCoffe:drink(drinkTime)if drinkTime ~= self.class.coffeeTime thenprint(self.name .. ": It is not the time to drink coffee")elseprint(self.name .. ": Mmm I love coffee ad drinkTime")end endfunction DrinksCoffe:include(klass)print(klass.name .. " drinks coffee at " .. klass.coffeeTime) endEnglishMan = class('EnglishMan') EnglishMan.static.coffeeTime = 5 EnglishMan:include(DrinksCoffe) function EnglishMan:initialize(name) self.name = name endSpaniard = class('Spaniard') Spaniard.static.coffeeTime = 6 Spaniard:include(DrinksCoffe) function Spaniard:initialize(name) self.name = name endtom = EnglishMan:new('tom') juan = Spaniard:new('juan') tom:drink(5) juan:drink(5) juan:drink(6)--为类增加元方法 Point = class('Point') function Point:initialize(x,y)self.x = xself.y = y endfunction Point:__tostring()return 'Point:[' .. tostring(self.x) .. ',' .. tostring(self.y) .. ']' end p1 = Point(100,200) print(p1)
lua类库 middleclass学习笔记相关推荐
- slua 是c语言开发的吗,初学者必备文档:LUA新手快速学习笔记
LUA程序设计语言 是一个简洁.轻量.可扩展的脚本语言.LUA读作/'lua/(噜啊),是葡萄牙语中"Luna"(月亮)的意思. LUA的目标是成为一个很容易嵌入其它语言中使用的语 ...
- 微信小程序连接物联网(二):NodeMCU Lua学习笔记
索引 这是用微信小程序遥控开门的系列文章,具体微信小程序连接物联网的代码在第三章提及. 微信小程序连接物联网(一):初始化ESP8266 NodeMCU 微信小程序连接物联网(二):NodeMCU L ...
- Lua学习笔记6:C++和Lua的相互调用
曾经一直用C++写代码.话说近期刚换工作.项目组中的是cocos2dx-lua,各种被虐的非常慘啊有木有. 新建cocos2dx-lua项目.打开class能够发现,事实上就是C++项目啦,只是为什么 ...
- 窗体 局部变量转换为全局_Unity 热更新解决方案 学习笔记(12)Lua 全局变量和局部变量...
笔者只是一位刚大三的学生本文章仅为学习笔记,非专业教程,仅供参考和学习交流!!! 如有错误或更好的方案欢迎指出和探讨!!! 全局变量 顾名思义,其生命有效期是全局的,整个lua文件中都可以使用,可以在 ...
- Lua入门系列----pil学习笔记之Getting Start
本文作者:sodme 本文出处:http://blog.csdn.net/sodme 声明: 本文可以不经作者同意, 任意复制, 转载, 但任何对本文的引用都请保留文章开始前三行的作者, 出处以及声明 ...
- NuGet学习笔记(2) 使用图形化界面打包自己的类库
上文NuGet学习笔记(1) 初识NuGet及快速安装使用说到NuGet相对于我们最重要的功能是能够搭建自己的NuGet服务器,实现公司内部类库的轻松共享更新.在安装好NuGet扩展后,我们已经能够通 ...
- NuGet学习笔记(2) 使用图形化界面打包自己的类库[转]
http://www.cnblogs.com/lzrabbit/archive/2012/05/01/2477607.html 上文NuGet学习笔记(1) 初识NuGet及快速安装使用说到NuGet ...
- 【转】NuGet学习笔记(2)——使用图形化界面打包自己的类库
上文NuGet学习笔记(1) 初识NuGet及快速安装使用说到NuGet相对于我们最重要的功能是能够搭建自己的NuGet服务器,实现公司内部类库的轻松共享更新.在安装好NuGet扩展后,我们已经能够通 ...
- Lua 学习笔记(一)
Lua学习笔记 1.lua的优势 a.可扩张性 b.简单 c.高效率 d.和平台无关 2.注释 a.单行注释 -- b.多行注释 --[[ --]] 3.类型和 ...
最新文章
- 5G商用对视频会议市场增长具有积极意义
- Understanding CORS
- 第九周项目二-我的数组类
- [名词解释] intuitive
- springboot 按钮权限验证_springboot学习之权限系统登录验证SpringSecurity
- C和C++中static的用法及友元
- java main启动spring_gradle 搭建springMVC项目,main函数启动
- python函数实例与类实例_python – 在类和实例上表现不同的函数
- 【Java】四种方法复制视频文件比较
- MessasgePack:一个小巧高效的序列化方式
- 记录利用CSS完美解决前端图片变形问题
- zookeeper资料
- mbedtls基础及其应用
- 【小白入门案例系列】Python全年天数查询小系统上线!
- 使用bootstrap图片上传插件(fileInput)springmvc实现图片上传全流程
- #项目的编译和发布 #静态发布新浪云 #node服务器发布新浪云 #nodejs服务器部署数据库 #新浪云前后端结合
- ASP 模板引擎,ASP 模板类 (Taihom.Template.class)
- 找质数算法之埃拉托色尼筛选法(Sieve of Eratosthenes算法)
- OpenCV:imwrite存储图像后为全黑
- Ubuntu 16.04下装ROS Kinetic问题若干、安装后首次运行