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扩展后,我们已经能够通 ...
随机推荐
- 好的web前端是如何拿到30万年薪的?
2018年前端开发不再像过去几年里新技术框架层出不穷,而是各种组件,模块,很多东西都有痕迹可寻,技术都在原来的基础上有了革新和沉淀. 前端招聘方面也在紧跟技术发展,大量“滥竽充数”的速成开发者开始失去 ...
- 【cocos2d-js官方文档】十二、对象缓冲池
cc.pool的使用场景 经常创建和销毁的元素,例如打飞机游戏里面的子弹等. 不适用的场景:不是很经常创建的物体,比如背景,建筑等. 如何使用cc.pool 让你的类支持cc.pool 首先,你需在需 ...
- CF 1005A Tanya and Stairways 【STL】
Little girl Tanya climbs the stairs inside a multi-storey building. Every time Tanya climbs a stairw ...
- hihocoder 1174 [BFS /拓扑排序判断是否有环]
hihocoder 1174 [算法]: 计算每一个点的入度值deg[i],这一步需要扫描所有点和边,复杂度O(N+M). 把入度为0的点加入队列Q中,当然有可能存在多个入度为0的点,同时它们之间也不 ...
- Python3 集合(无序的set)
ayout: post title: Python3 集合(无序的set) author: "luowentaoaa" catalog: true tags: mathjax: t ...
- C++ 对象的内存布局【转】
单一继承: 虚函数表在最前面的位置. 成员变量根据其继承和声明顺序依次放在后面. 在单一的继承中,被overwrite的虚函数在虚函数表中得到了更新. 多重继承 每个父类都有自己的虚表. 子类的成员函 ...
- 博弈论与SG函数
巴什博奕: 两个顶尖聪明的人在玩游戏,有n个石子,每人可以随便拿1−m个石子,不能拿的人为败者,问谁会胜利 结论: 设当前的石子数为\(n=k∗(m+1)\)即\(n%(m+1)==0\)时先手一定失 ...
- 【AC自动机】hdu2222 Keywords Search
AC自动机模板题,给你n个模式串和一个文本串,问你有几个模式串在文本串出现过. 注意防止重复统计 这里推荐一波郭大爷的介绍,简单易懂. http://www.bilibili.com/video/av ...
- Android Studio 生成aar包多Module引用问题
问题描述: 有个arr文件被放到Module A中引用,现在Module B又依赖了Module A,则在编译过程中会发生错误,Module B找不到aar文件. 解决办法: 使用相对路径来找到这个a ...
- 【sql】sql优化
sql优化: 1.最左前缀原则 如果contact表上的tenement_id列创建了索引,那么查询的时候将索引列放在最左边,查询的速度会快很多,因为扫描的范围是索引范围而不是整张表范围!! SELE ...