lglib概览

lglib为lua提供了很多扩展。加载lglib后,它完成以下几件事情:

1. 扩展了lua标准库中的string, table, io三个库;
2. 增加了一些数据类型;
3. 增加了一些辅助函数。

第一个工作,就是把lglib.string, lglib.table, lglib.io三个模块中的接口注入到lua标准库中的string, table, io三个名称空间下。

第二个工作,主要是新增了以下全局数据对象:

Object:这个对象,为lua提供了方便好用的oop机制。
local Cat = Object:extend {....}


List:这个对象,为lua添加了方便好用的列表操作API。
Dict:这个对象,为lua添加了方便好用的字典操作API。
Set:这个对象,为lua添加了方便好用的集合操作API。
T:这个函数,为lua中生成一个可以使用面向对象语法的table对象提供的支持。

第三个工作,主要新增了以下全局辅助函数:

判断table系对象类型中具体的类型
typename(t)		返回'List', 'Dict', 'Set', 'Table', nil中的一种


判断对象是否为list
isList(t)		如果是list,就返回true;否则,返回false


判断对象是否为dict
isDict(t)		如果是dict,就返回true;否则,返回false


判断对象是否为set
isSet(t)		如果是set,就返回true;否则,返回false


打印一层table内容
ptable(t)


打印两层table内容
pptable(t)


打印完整对象内容(参数可以为任意对象,不局限于table)
po(t)


参数类型检查断言(如果不合就让程序报错停下来)
checkType(...)

其中,参数要求这个样子使用。即先写参数变量,后面要跟上这些变量的期望类型。
checkType(a, b, c, 'string', 'table', 'number')


参数范围检查断言(如果不合就让程序报错停下来)
checkRange(...)

其中,参数要求这个样子使用。
checkRange(a, 0, 10, b, 20, 30, c, 10, 100)
表示期望a在0到10之间,b在20到30之间,c在10到100之间。(最好是要分下组,后面要改进)


判断是否为假,对所有对象适用。一般用于nil值,数值0的判断
isFalse(...)	如果为假,就返回true;否则,返回false


判断是否为空,对所有对象适用。一般用于字符串,表格的判断
isEmpty(...)	如果为空,就返回true;否则,返回false


设置对象的原型
setProto(obj, proto)	设置obj原型为proto

obj:	必须为table及衍生类型;
proto:	必须为table及衍生类型;


对象序列化
seri(obj)	将obj序列化(转成字符串返回)


反序列化对象
unseri(obj_str)	将obj_str反序列化(转成对象返回)


猜你喜欢

转载自daogangtang.iteye.com/blog/1080422