lua类实现
_Account = {}
--创建一张借记卡
function _Account:new( tb )
local _Tb = tb or {}
_Tb._mBalance = _Tb._mBalance or
setmetatable(_Tb, self)
self.__index = self
return _Tb
end
--借记卡取款
function _Account:desposit( value )
if value > self._mBalance then
print(string.format("取款"..value .. "失败, 剩余存款" .. self._mBalance))
return
end
self._mBalance = self._mBalance - value
print(string.format("取款"..value .. ", 剩余存款" .. self._mBalance))
end
--存钱
function _Account:addBalance(val)
local num = val or
self._mBalance = self._mBalance + num
print("存钱"..val)
end
--[[
信用卡也具备储蓄卡的存取功能,所以直接继承储蓄卡,复用储蓄卡的存钱功能。
我们在访问一个表不存在的域时,lua解释器会去查找metatable中是否有__index方法(metamethod),如果不存在则返回nil。
_Credit是_Account:new出来的,metatable是_Account,__index也是_Account,所以当_Credit对象访问addBalance的时候,
会到_Account中找。
]]
_Credit = _Account:new({_mLimit = })
--信用卡取款
function _Credit:desposit( value )
if value > self._mBalance + self._mLimit then
print(string.format("取款"..value .. "失败, 剩余额度" .. self._mLimit .. ", 剩余存款"..self._mBalance))
return
end
if self._mBalance >= value then
self._mBalance = self._mBalance - value
else
self._mLimit = self._mLimit - (value - self._mBalance)
self._mBalance =
end
print(string.format("取款"..value .. ", 剩余额度" .. self._mLimit .. ", 剩余存款"..self._mBalance))
end
print(" --储蓄卡--")
local myAccount_2 = _Account:new()
myAccount_2:addBalance()
myAccount_2:desposit()
myAccount_2:desposit()
print("\n --信用卡--")
local cyCredit = _Credit:new()
cyCredit:addBalance()
cyCredit:desposit()
cyCredit:desposit()
cyCredit:desposit()
--[[结果
--储蓄卡--
存钱1000
取款200, 剩余存款800
取款2000失败, 剩余存款800
--信用卡--
存钱600
取款500, 剩余额度1000, 剩余存款100
取款500, 剩余额度600, 剩余存款0
取款1000失败, 剩余额度600, 剩余存款0
]]
lua类实现的更多相关文章
- LUA类
cpp_object_map = {}setmetatable(cpp_object_map, { __mode = "kv" }) local search_basesearch ...
- lua 类支持属性不能被修改
背景 lua是类是借助表的来实现的, 类被定义后, 在使用场景下, 不希望被修改.如果被修改, 则影响的类的原始定义, 影响所有使用类的地方. 例如: --- router.lua class fil ...
- Lua类的继承 参考实现
参考url: https://blog.codingnow.com/cloud/LuaOO 最近在思考lua类的继承实现 ,参考了云风的类实现,感觉他的更像是接口写法.于是尝试用自己的方式重写了类实例 ...
- Lua类和类继承实现
Lua本身是不能像C++那样直接实现继承,但我们可以用万能的table表来实现. 以下我总结了三种方式的类以及继承的实现 第一.官方的做法,使用元表实现 原理参照<Programming in ...
- lua 类实现
Class={}; Class.classList={}; --保存所有已经定义过的类 --类的类型: 类和接口, 接口也是一种类 Class.TYPE_CLASS="Class" ...
- <7>Lua类的表的实例创建
根据上一节知识所述Lua中没有像C.C++.JAVA中的类概念,面向对象等 ,但我们可以模拟出来 如下 代码如下: --创建类的表 local Person = {} function Person: ...
- lua 类继承和实现
http://blog.csdn.net/ssihc0/article/details/7742323 Account={balance=}; --新建了一个对像,他有一个属性balance func ...
- lua 面向对象编程类机制实现
lua no class It is a prototype based language. 在此语言中没有class关键字来创建类. 现代ES6, 已经添加class类. prototype bas ...
- 【Quick-COCOS2D-X 3.3 怎样绑定自己定义类至Lua之三】动手绑定自己定义类至Lua
查看[Quick-COCOS2D-X 3.3 怎样绑定自己定义类至Lua之二]新建项目中配制环境,我们完美的在新建项目中完毕了绑定须要的环境,接下来才是最关健的一步.绑定自己定义C++类至Lu ...
随机推荐
- servlet_获取初始化参数
在web.xml的<servlet>标签中增添 <init-param> <param-name>XXX</param-name> <param- ...
- sql server time(7) 默认值
语句为 ALTER TABLE dbo.YourTable ADD CONSTRAINT DF_TimeDefault DEFAULT '00:00:00' FOR YourTimeColumn 比如 ...
- Java常量池详细说明
java常量池技术 java中的常量池技术,是为了方便快捷地创建某些对象而出现的,当需要一个对象时,就可以从池中取一个出来(如果池中没有则创建一个),则在需要重复创建相等变量时节省了很多时间.常量池 ...
- vue自定义指令clickoutside扩展--多个元素的并集作为inside
都是个人理解,如果发现错误,恳请大家批评指正,谢谢.还有我说的会比较啰嗦,因为是以自身菜鸡水平的视角来记录学习理解的过程,见谅. 1.前言 产品使用vue+element作为前端框架.在功能开发过程中 ...
- 《奋斗吧!菜鸟》 第八次作业:Alpha冲刺 Scrum meeting 5
项目 内容 这个作业属于哪个课程 任课教师链接 作业要求 https://www.cnblogs.com/nwnu-daizh/p/11012922.html 团队名称 奋斗吧!菜鸟 作业学习目标 A ...
- 【ACM】poj_2210_Metric Time_201308011933
Metric TimeTime Limit: 1000MS Memory Limit: 65536K Total Submissions: 2550 Accepted: 783 Descripti ...
- [bzoj3123][Sdoi2013]森林_主席树_启发式合并
森林 bzoj-3123 Sdoi-2013 题目大意:给定一片共n个点的森林,T个操作,支持:连接两个不在一棵树上的两个点:查询一棵树上路径k小值. 注释:$1\le n,T \le 8\cdot ...
- HDU 3987 && DINIC
很容易发现是网络流的题目,但最少边怎么求呢?初时想不到,但画图后忽然发现可以这样: 求一次网络流最小割后,把满流的边置1,不满流的置INF.再求一次最大流即可. 为什么呢? 是否会存在一些边当前不满流 ...
- TensorFlow 入门之手写识别CNN 三
TensorFlow 入门之手写识别CNN 三 MNIST 卷积神经网络 Fly 多层卷积网络 多层卷积网络的基本理论 构建一个多层卷积网络 权值初始化 卷积和池化 第一层卷积 第二层卷积 密集层连接 ...
- 手动重启weblogic脚本
手动重启weblogic脚本 pid=`ps -ef|grep fzjc_Admin_Server|grep -v grep|awk '{print $2}'` echo $pid kill -9 $ ...