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