51Testing软件测试论坛

标题: 游戏测试--lua修改为面向对象 [打印本页]

作者: jiazurongyu    时间: 2019-12-27 13:32
标题: 游戏测试--lua修改为面向对象

lua负责游戏客户端功能的逻辑拼接,目前部分服务器用C系的也用lua做为很好的关联性语言。
但是lua本身的函数式编程,让开发一些工具和读actor模式等程序代码时会比较吃力。
这里推荐使用:引用的方式。
  1. --获取当前的格式时间  utils/dateUtils.lua
  2. function getDateNow()
  3.       local nowTime = os.date("%Y-%m-%d %H:%M:%S", os.time())
  4.       return nowTime
  5. end
复制代码
比如上面这个,如果其他文件要调用的话
可以这么写
  1. require("utils.dateUtils")
  2. local string = string; --变局部变量
  3. print(string.format(getDateNow()))
复制代码
但是这个时典型的函数式编程。
要面向对象的模式 先实例在使用就需要对getDateNow()函数进行改造
  1. local DateU = {}

  2. function DateU:New()
  3.      local obj ={}
  4.      self.__index = self   --绑定obj后面对象到self
  5.      setmetatable(obj,self)  --设置元对象
  6.      return obj
  7. end

  8. function DateU:getDateNow()
  9.      local nowTime = os.date("%Y-%m-%d %H:%M:%S", os.time())
  10.      -- print(nowTime)
  11.      return nowTime
  12.     end
  13. return DateU  --需要返回才能实例化
复制代码
然后在引用后调用的文件内部修改
  1. local DateTime = require("utils.dateUtils")
  2. local date = DateTime:New()
  3. print(string.format(date:getDateNow()))--需要注意一定是通过:引用,因为前面是:声明的
复制代码
结果就出来一样的了。通过了解这种的结构,提升对于游戏测试读代码的能力。



作者: lysslcy    时间: 2020-9-27 11:37
这一两年断断续续看一些lua基础知识
大部分还是一头雾水,感觉好难啊




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2