lua table 杂说

这几天想着动手打造一个lua通用扩展库来。脑袋不用多想,筋骨也懒得动弹。设想中,第一步必须是实现面向对象OOP,其次用OOP把基础的数据结构搭起来,最后再把剩下的字符串、数字、日期、正则的接口展开起来,也就八九不离十了。

首先是OOP这关。借用Cocos2d-x Luaclass方法加以构造是一个现成的、不错的选择〔一直用着,没出什么幺蛾子,最新版本还支持多继承,不过也就看个新鲜,实际上在现有的游戏项目开发中,基本不会用到,也可能是还没有这种强迫的需求〕,实际上我也这么干了。于是乎,点缀了几个预想中的接口来,用着也顺手,但总有那么股怪味儿。

要说什么怪味儿?其实一直都很清楚,只是之前一直没有正视或思考过——Cocos2d-x 的那套OOP实际上是个半成品!在它的实现中,所有的成员都直接或间接地挂在类上,这意味着,只要你访问得到的就没有你不能改的,不管你愿不愿意,一个nil赋值甚至可以毁了一个类。可怕的副作用!

而我们知道lua本身只有一种数据结构,也就是table。说它管用,上天入地,无所不及;说它难用,烂七八糟,流氓痞子。可以当Array,可以玩HashMap,可以多重嵌套,层层叠叠,不是json,胜似json。综上所述——自成一说,没个正经!

以上论述属个人观点,下次分享怎么实现类成员的私有化。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,286评论 4 61
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,771评论 19 139
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一种新的协议。它实...
    香橙柚子阅读 24,326评论 8 183
  • 01 周日的中午,安老师从省城回到了这个小盆地。看到安老师的那一刻,我觉得无比地心安。 在栏目组工作的时候,安老师...
    慢世人阅读 1,436评论 0 1
  • 你们都别理我了,我要开始练琴了。
    苦雨琴谣阅读 1,423评论 0 1