51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 5360|回复: 1
打印 上一主题 下一主题

游戏测试--lua修改为面向对象

[复制链接]
  • TA的每日心情

    2019-12-27 13:32
  • 签到天数: 15 天

    连续签到: 1 天

    [LV.4]测试营长

    跳转到指定楼层
    1#
    发表于 2019-12-27 13:32:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    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()))--需要注意一定是通过:引用,因为前面是:声明的
    复制代码
    结果就出来一样的了。通过了解这种的结构,提升对于游戏测试读代码的能力。


    评分

    参与人数 1综合技术指数 +10 收起 理由
    lsekfe + 10 很给力!

    查看全部评分

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    该用户从未签到

    2#
    发表于 2020-9-27 11:37:57 | 只看该作者
    这一两年断断续续看一些lua基础知识
    大部分还是一头雾水,感觉好难啊
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-23 18:06 , Processed in 0.063279 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表