class 意譯為'類', 是對(duì)'對(duì)象'的一種抽象描述. 多用與各種面相對(duì)象編程語言中.
lua語言沒有原生的class類型, 但是對(duì)class
的wrapper提供了基本構(gòu)建的元方法.
cf對(duì)此為方便描述內(nèi)置對(duì)象與內(nèi)置庫封裝, 使用lua table的相關(guān)元方法建立了最基本的class模型.
cf雖然規(guī)定了一套最基本的class創(chuàng)建、使用方法, 但是不會(huì)限制用戶對(duì)class的操作方法與操作習(xí)慣.
cf為內(nèi)簡(jiǎn)化對(duì)基于class封裝的內(nèi)置庫的學(xué)習(xí)成本與代碼可讀性, 去除了class原本擁有的'繼承'概念.
local class = require "class"
class庫已經(jīng)添加到cf框架都路徑中, 可以在任意地方直接導(dǎo)入
local Humen = class("Humen")
function Humen:ctor(opt)
-- 不存在的ctor會(huì)發(fā)出警告
-- 即使不需要初始化, 請(qǐng)定義后留空
end
ctor內(nèi)部發(fā)生錯(cuò)誤將會(huì)拋出異常.
local Humen = class("Humen")
function Humen:ctor(opt)
self.name = opt.name
self.age = opt.age
self.sex = opt.sex
end
local man = Humen:new({name = "水果糖", age = 27, sex = 'man'})
print(man.name, man.age, man.sex)
ctor僅為初始化使用, new方法將會(huì)返回一個(gè)成功創(chuàng)建的對(duì)象.
local Humen = class("Humen")
function Humen:ctor(opt)
self.name = opt.name
self.age = opt.age
self.sex = opt.sex
end
function Humen:run()
print("I'm run.")
end
local man = Humen:new({name = "水果糖", age = 27, sex = 'man'})
print(man.name, man.age, man.sex)
man:run()
local Humen = class("Humen")
function Humen:ctor(opt)
self.name = opt.name
self.age = opt.age
self.sex = opt.sex
end
function Humen:setAge(age)
self.age = age
end
function Humen:setName(name)
self.name = name
end
local man = Humen:new({name = "水果糖", age = 27, sex = 'man'})
print(man.name, man.age, man.sex)
man:setName("Candy")
man:setAge(28)
更多建議: