codecamp

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)

最后

Cache
MQ
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

API 使用手册

HTTP API

Mail API

DB API

DB

Cache API

class API

MQ API

MQ

Crypt API

cf API

cf

System API

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }