lua类库 middleclass学习笔记
middleclass使在lua中面象对象变的简单
抄了一遍他的示例代码运行着试了试,基本懂了
- local class = require 'middleclass'
- --类的继承
- Person = class('Person') --定义一个Person类
- function Person:initialize(name) --构造函数
- self.name = name
- end
- function Person:speak() --方法
- print("Hi,i am " ..self.name .. ".")
- end
- AgedPerson = class('AgedPerson',Person) --子类
- AgedPerson.static.ADULT_AGE = --类成员
- function AgedPerson:initialize(name,age) --子类构造
- Person.initialize(self,name)
- self.age = age
- end
- function AgedPerson:speak() --子类方法
- Person.speak(self) --子类调用父类方法
- if(self.age < AgedPerson.ADULT_AGE) then
- print("i am underaged")
- else
- print("i am an adult")
- end
- end
- local p1 = AgedPerson:new('张东升',) --定义一个子类对象
- local p2 = AgedPerson:new('无量',)
- 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 then
- print(self.name .. ": It is not the time to drink coffee")
- else
- print(self.name .. ": Mmm I love coffee ad drinkTime")
- end
- end
- function DrinksCoffe:include(klass)
- print(klass.name .. " drinks coffee at " .. klass.coffeeTime)
- end
- EnglishMan = class('EnglishMan')
- EnglishMan.static.coffeeTime =
- EnglishMan:include(DrinksCoffe)
- function EnglishMan:initialize(name) self.name = name end
- Spaniard = class('Spaniard')
- Spaniard.static.coffeeTime =
- Spaniard:include(DrinksCoffe)
- function Spaniard:initialize(name) self.name = name end
- tom = EnglishMan:new('tom')
- juan = Spaniard:new('juan')
- tom:drink()
- juan:drink()
- juan:drink()
- --为类增加元方法
- Point = class('Point')
- function Point:initialize(x,y)
- self.x = x
- self.y = y
- end
- function Point:__tostring()
- return 'Point:[' .. tostring(self.x) .. ',' .. tostring(self.y) .. ']'
- end
- p1 = Point(,)
- print(p1)
lua类库 middleclass学习笔记的更多相关文章
- Lua数据结构的学习笔记
更多详细内容请查看:http://www.111cn.net/sys/linux/59911.htm table是Lua中唯一的数据结构,其他语言所提供的其他数据结构比如:arrays.records ...
- Lua编程入门-学习笔记2
第6章 深入函数 函数是一种“第一类值(First-Class Value)”,他们具有特定的词法域(lexical scoping) 将表达式“function(x) <body> en ...
- Lua编程入门-学习笔记1
第1章:起点 Chunks: 语句块 每个语句结尾的分号是可选的,如果同一行有多个语句最好使用分号分隔: dofile("lib1.lua") -- 执行lua文件 全局变量:局 ...
- Lua 5.1 学习笔记
1 简介 2 语法 2.1 语法约定 2.1.1 保留关键字 2.1.2 操作符 2.1.3 字符串定义 2.2 值与类型 2.2.1 强制转换 2.3 变量 2.3.1 索引 2.3.2 环境表 2 ...
- NuGet学习笔记
NuGet学习笔记(1)——初识NuGet及快速安装使用 NuGet学习笔记(2)——使用图形化界面打包自己的类库 NuGet学习笔记(3)——搭建属于自己的NuGet服务器
- NuGet学习笔记(2) 使用图形化界面打包自己的类库
上文NuGet学习笔记(1) 初识NuGet及快速安装使用说到NuGet相对于我们最重要的功能是能够搭建自己的NuGet服务器,实现公司内部类库的轻松共享更新.在安装好NuGet扩展后,我们已经能够通 ...
- [转]LUA 学习笔记
Lua 学习笔记 入门级 一.环境配置 方式一: 1.资源下载http://www.lua.org/download.html 2.用src中的源码创建了一个工程,注释调luac.c中main函数,生 ...
- uLua学习笔记(三):Unity3D和Lua之间的相互调用
这篇笔记主要集中学习一下uLua和Unity3D之间相互调用的方法,我们导入了uLua之后,现在会弹出一个类似学习屏幕的东西,如下: 先赞一个! Unity3D调用Lua Unity3D调用Lua的方 ...
- NuGet学习笔记(2)——使用图形化界面打包自己的类库
上文NuGet学习笔记(1) 初识NuGet及快速安装使用说到NuGet相对于我们最重要的功能是能够搭建自己的NuGet服务器,实现公司内部类库的轻松共享更新.在安装好NuGet扩展后,我们已经能够通 ...
随机推荐
- C# axWindowsMediaPlayer制作播放器
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- 分分钟搞定 JSP 技术
一.JSP的语法 1.模版元素 写在JSP中的html内容 在翻译后的Servlet中, 直接被out.write原样输出 2.JSP脚本表达式 格式: ...
- HDU 6208 The Dominator of Strings【AC自动机/kmp/Sunday算法】
Problem Description Here you have a set of strings. A dominator is a string of the set dominating al ...
- 百度之星资格赛 2016 Problem 1002
本文链接:http://www.cnblogs.com/Ash-ly/p/5494623.html 题意: 度熊面前有一个全是由1构成的字符串,被称为全1序列.你可以合并任意相邻的两个1,从而形成一个 ...
- SPOJ GSS2 - Can you answer these queries II(线段树 区间修改+区间查询)(后缀和)
GSS2 - Can you answer these queries II #tree Being a completist and a simplist, kid Yang Zhe cannot ...
- ret2dir:Rethinking Kernel Isolation(翻译)
前一段时间在网上找ret2dir的资料,一直没找到比较系统的介绍,于是干脆把这篇经典的论文翻译了,当然,第一次翻译(而且还这么长),很多词汇不知道到底该怎么翻译,而且最近事情也比较多, 翻译得挺烂的, ...
- luogu P1824 进击的奶牛
题目描述 Farmer John建造了一个有N(2<=N<=100,000)个隔间的牛棚,这些隔间分布在一条直线上,坐标是x1,...,xN (0<=xi<=1,000,000 ...
- 【贪心】【multiset】 Codeforces Round #401 (Div. 2) B. Game of Credit Cards
对第一个人的排序,然后从小到大处理,对第一个人的每枚卡片,从第二个人的卡片中选择一个大于等于它的最小的,否则选择一个当前剩下的最小的,这样可以保证负场最少. 如果选择的改成大于它的最小的,就可以保证胜 ...
- 【差分约束系统】【spfa】UVALive - 4885 - Task
差分约束系统讲解看这里:http://blog.csdn.net/xuezhongfenfei/article/details/8685313 模板题,不多说.要注意的一点是!!!对于带有within ...
- 【树链剖分】【线段树】bzoj3626 [LNOI2014]LCA
引用题解: http://blog.csdn.net/popoqqq/article/details/38823457 题目大意: 给出一个n个节点的有根树(编号为0到n-1,根节点为0).一个点的深 ...