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原型为protoobj:必须为table及衍生类型;proto:必须为table及衍生类型;
对象序列化
seri(obj)将obj序列化(转成字符串返回)
反序列化对象
unseri(obj_str)将obj_str反序列化(转成对象返回)