lua table 杂说

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

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

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

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

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

你可能感兴趣的:(lua table 杂说)