class
cf中的class
class 意译为'类', 是对'对象'的一种抽象描述. 多用与各种面相对象编程语言中.
lua语言没有原生的class类型, 但是对class
的wrapper提供了基本构建的元方法.
cf对此为方便描述内置对象与内置库封装, 使用lua table的相关元方法建立了最基本的class模型.
cf虽然规定了一套最基本的class创建、使用方法, 但是不会限制用户对class的操作方法与操作习惯.
cf为内简化对基于class封装的内置库的学习成本与代码可读性, 去除了class原本拥有的'继承'概念.
cf的class的运行流程
1. 定义一个class.
2. 添加用户自定义方法.
3. 等待用户使用class进行创建.
4. 使用new方法根据类来创建一个对象.
5. 操作对象.
cf如何使用class
1.导入class函数
local class = require "class"
class库已经添加到cf框架都路径中, 可以在任意地方直接导入
2. 创建一个基本的lua class
local Humen = class("Humen")
function Humen:ctor(opt)
-- 不存在的ctor会发出警告
-- 即使不需要初始化, 请定义后留空
end
ctor内部发生错误将会抛出异常.
3. 初始化lua class
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方法将会返回一个成功创建的对象.
4. 为class增加一些方法
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()
5. 为class的自定义方法添加一些接受参数
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)