=====Account Start==========
local Account = {
balance = 0,
-- withdraw = function(self, v)
-- self.balance = self.balance - v
-- end,
}
function Account : withdraw(v)
if v > self.balance then
--error "insufficient funds"
end
self.balance = self.balance - v
end
function Account : deposit(v)
self.balance = self.balance + v
end
function Account : new(account)
account = account or {}
setmetatable(account, self)
self.__index = self
return account
end
--=====Account End==========
--=====SpecialAccount Start==========
local SpecialAccount = Account : new()
function SpecialAccount : withdraw(v)
if v - self.balance >= self : getLimit() then
error "insufficient funds"
end
self.balance = self.balance - v
end
function SpecialAccount : getLimit()
return self.limit
end
--=====SpecialAccount End==========
--=====NewAccount Start==========
local NewAccount = {}
function NewAccount : new(initialBalance)
local self = {balance = initialBalance}
local withdraw = function(v)
self.balance = self.balance - v
end
local deposit = function(v)
self.balance = self.balance + v
end
local getBalance = function()
return self.balance
end
return {
withdraw = withdraw,
deposit = deposit,
getBalance = getBalance
}
end
--=====NewAccount End==========
--=====Test Start==========
local Test = class("Test", Account)
function Test : ctor(name)
print("get a name:", name)
end
function Test : print()
print("I'm test class's print function", self.balance)
end
--=====Test End==========
local t = Test : new()
t : withdraw(100)
t : print()
local acc1 = NewAccount : new(100)
acc1.withdraw(40)
print("NewAccount余额", acc1.getBalance())
local s = SpecialAccount : new({limit = 1000})
s : withdraw(200)
local MainScene = class("MainScene", cc.load("mvc").ViewBase)
function MainScene:onCreate()
-- add background image
display.newSprite("MainSceneBg.jpg")
:move(display.center)
:addTo(self)
-- add play button
local playButton = cc.MenuItemImage:create("PlayButton.png", "PlayButton.png")
:onClicked(function(sender)
--self:getApp():enterScene("PlayScene")
--local layer = cc.TestLayer:create()
-- layer:myPrint("哈哈")
local a1 = Account : new({balance = 0})
-- a1:deposit(100)
--a1.deposit(a1, 100)
-- getmetatable(a1).__index.deposit(a1, 100)
-- Account.deposit(a1, 100)
--a1 : withdraw(100)
print("余额:", a1.balance)
end)
cc.Menu:create(playButton)
:move(display.cx, display.cy - 200)
:addTo(self)
end
return MainScene
Lua/cocos2d-lua中定义类的四中方法
最新推荐文章于 2018-04-03 18:10:00 发布