lua类实现
阅读原文时间:2023年07月15日阅读:2

_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

]]

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章