lua(仿类)
Account = {
balance =
}
function Account:deposit(v)
self.balance = self.balance + v
end
function Account:new(o)
o = o or {}
setmetatable(o, self)--Account表本身作为o的metatable
self.__index = self--自己作为自己的原型??
return o
end
a = Account:new{balance = }
--调用a的deposit,他会查找a的metametable的_index对应的表
--getmetatable(a).__index(a, 100)
--最终调用的是Account的deposit即Account.deposit(a, 100.00)
a:deposit(100.00)--通过这种方法调用了原始的Account的deposit
--将会继承默认的balance的值
b = Account:new()
print(b.balance)--b.balance等于0,下次访问此值时,不会涉及__index,b已经存在自己的balance域
--通过这种方法可以模拟面向对象,Account是类,而创建出来的b是这个类的对象
lua(仿类)的更多相关文章
- lua学习:lua中“类”的实现
在之前的面试遇到考用lua实现类的题目.现在就补补这块知识点. 我们都知道Lua中的table是一个对象.拥有状态,拥有self,拥有独立于创建者和创建地的生命周期. 一个类就是一个创建对象的模具.L ...
- Lua面向对象----类、继承、多继承、单例的实现
(本文转载)学习之用,侵权立删! 原文地址 http://blog.csdn.net/y_23k_bug/article/details/19965877?utm_source=tuicool&a ...
- [Quick-x lua]CCLabel类数字变化动作
之前写了个C++版本的,现在改成lua的, 两者原理是一样,但是动作的执行方式有些微区别 (因为lua无法继承CCActionInterval类,单纯使用lua的话无法调用action的update方 ...
- Lua 数学类
数学类主要有Vec2(坐标向量).Size(尺寸).Rect(矩形). 创建 在Lua中创建的 Vec2.Size.Rect 都是一个table类型. 其中只有相应的成员变量,没有相关的函数运算. c ...
- lua 定义类 就是这么简单
在网上看到这样一段代码,真是误人子弟呀,具体就是: lua类的定义 代码如下: local clsNames = {} local __setmetatable = setmetatable loca ...
- cocos2dx 3.0 之 lua 创建类 (二)
利用lua 中的table 特性 Base = {x = 0,y = 0} Base.name = "luohai"Base.age = 12Base.sex = "ma ...
- cocos2dx 3.0 之 lua 创建类
利用3.0里面封装好的模板类来写,不罗嗦,直接上例子(消除星星小游戏中 星星类) require "extern" StarSprite = class("StarSpr ...
- cocos2dx之lua派生类和方法重新
记得把extern.lua拷贝到你的资源目录,这里要用到 require "extern" MyLayer = class("MyLayer", functio ...
- Lua 仿PHP的strtotime
由于工作原因,两周前开始研究Lua,因为之前的项目要由php改成Lua实现,而一些php里现成的东西,在Lua里就需要手写,于是就有了下面的代码.写的比较粗糙,权当做个记录吧. --[[ 获取时间戳 ...
随机推荐
- Flume推送数据到SparkStreaming案例实战和内幕源码解密
本期内容: 1. Flume on HDFS案例回顾 2. Flume推送数据到Spark Streaming实战 3. 原理绘图剖析 1. Flume on HDFS案例回顾 上节课要求大家自己安装 ...
- 2017.3.31 spring mvc教程(四)全局的异常处理
学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...
- IO流(二)I/O
一.IO流概述 1.定义:Java的IO流是实现输入输出的基础,它可以方便地实现数据的输入/输出操作. 2.流的分类: (1)按流向来分:输入流和输出流 (2)按操作的数据来分:字节流和字符流 (3) ...
- python中MySQLdb模块用法实例
篇文章主要介绍了python中MySQLdb模块用法,以实例形式详细讲述了MySQLdb模块针对MySQL数据库的各种常见操作方法,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了python中 ...
- Android学习(十一) File文件操作
File类 1.获取当前应用程序的目录: this.getFilesDir(); //获取当前应用程序的数据目录 ...
- POJ 2029 Get Many Persimmon Trees (二维树状数组)
Get Many Persimmon Trees Time Limit:1000MS Memory Limit:30000KB 64bit IO Format:%I64d & %I ...
- iOS项目开发实战——使用同步请求获取网页源码
网络请求一般分为同步请求和异步请求,同步请求假设訪问时间过长,会造成界面卡死状态,用户体验不是非常好.可是请求速度较快的话,也能够考虑使用同步訪问.如今先来学习同步訪问. (1)在viewDidLoa ...
- .net 定时服务
namespace MvcApplication1 { public class MvcApplication : System.Web.HttpApplication { protected voi ...
- Java学习从入门到精通(2) [转载]
Java Learning Path(二).书籍篇 学习一门新的知识,不可能指望只看一本,或者两本书就能够完全掌握.需要有一个循序渐进的阅读过程.我推荐Oreilly出版的Java系列书籍. 在这里我 ...
- Android下的ActionBar
1 http://blog.csdn.net/lilu_leo/article/details/7674904 2 http://blog.csdn.net/eclipsexys/article/de ...