class

2019-04-18 18:39 更新

cf中的class

class 意譯為'類', 是對'對象'的一種抽象描述. 多用與各種面相對象編程語言中.

lua語言沒有原生的class類型, 但是對class的wrapper提供了基本構(gòu)建的元方法.

cf對此為方便描述內(nèi)置對象與內(nèi)置庫封裝, 使用lua table的相關(guān)元方法建立了最基本的class模型.

cf雖然規(guī)定了一套最基本的class創(chuàng)建、使用方法, 但是不會限制用戶對class的操作方法與操作習(xí)慣.

cf為內(nèi)簡化對基于class封裝的內(nèi)置庫的學(xué)習(xí)成本與代碼可讀性, 去除了class原本擁有的'繼承'概念.

cf的class的運(yùn)行流程

1. 定義一個(gè)class.

2. 添加用戶自定義方法.

3. 等待用戶使用class進(jìn)行創(chuàng)建.

4. 使用new方法根據(jù)類來創(chuàng)建一個(gè)對象.

5. 操作對象.

cf如何使用class

1.導(dǎo)入class函數(shù)

  1. local class = require "class"

class庫已經(jīng)添加到cf框架都路徑中, 可以在任意地方直接導(dǎo)入

2. 創(chuàng)建一個(gè)基本的lua class

  1. local Humen = class("Humen")
  2. function Humen:ctor(opt)
  3. -- 不存在的ctor會發(fā)出警告
  4. -- 即使不需要初始化, 請定義后留空
  5. end

ctor內(nèi)部發(fā)生錯(cuò)誤將會拋出異常.

3. 初始化lua class

  1. local Humen = class("Humen")
  2. function Humen:ctor(opt)
  3. self.name = opt.name
  4. self.age = opt.age
  5. self.sex = opt.sex
  6. end
  7. local man = Humen:new({name = "水果糖", age = 27, sex = 'man'})
  8. print(man.name, man.age, man.sex)

ctor僅為初始化使用, new方法將會返回一個(gè)成功創(chuàng)建的對象.

4. 為class增加一些方法

  1. local Humen = class("Humen")
  2. function Humen:ctor(opt)
  3. self.name = opt.name
  4. self.age = opt.age
  5. self.sex = opt.sex
  6. end
  7. function Humen:run()
  8. print("I'm run.")
  9. end
  10. local man = Humen:new({name = "水果糖", age = 27, sex = 'man'})
  11. print(man.name, man.age, man.sex)
  12. man:run()

5. 為class的自定義方法添加一些接受參數(shù)

  1. local Humen = class("Humen")
  2. function Humen:ctor(opt)
  3. self.name = opt.name
  4. self.age = opt.age
  5. self.sex = opt.sex
  6. end
  7. function Humen:setAge(age)
  8. self.age = age
  9. end
  10. function Humen:setName(name)
  11. self.name = name
  12. end
  13. local man = Humen:new({name = "水果糖", age = 27, sex = 'man'})
  14. print(man.name, man.age, man.sex)
  15. man:setName("Candy")
  16. man:setAge(28)

最后

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號