`
daogangtang
  • 浏览: 61317 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

lglib.table API

Lua 
阅读更多
lglib table库是对lua基本table库的扩展

判断table是否为空
tbl:isEmpty()	如果table为空,就返回true;反之,返回false。table为空的标准是即没有list部分,又没有dict部分。



将table分离成list部分和dict部分
tbl:takeAparts()	返回两个参数,第一个为一个list, 第二个为一个dict


浅复制
tbl:copy()	复制本table, 产生一个新的table返回


深复制
tbl:deepcopy()	深度复制本table(包含层级结构), 产生一个新的table返回


将另一个table中的内容拷贝到本table中来
tbl:update(source, keys)	

source: 另一个table;
keys: 可选。如果有的话,就只复制keys中指定的那些键值对
返回: self

分享到:
评论
1 楼 fisk 2011-09-01  
发现一些问题与不理解的地方,你看看哈。
1. function takeAparts(self)
在存储字典时,下面的判断条件好似漏掉一些情况
if type(k) ~= 'number' or (type(k) == 'number' and k > list_len) then
比如, k = 0/-1/12.34 等,即它是number,而且比list_len小,但是不是正整数

2. function deepcopy(self, seen)
有个typo, res[k] = table.deepCopy(v, seen)中deepCopy 与函数定义时的deepcopy应保持一致。

另外个问题是,seen[self] = nil 不知道为什么需要这句? 记录下来不是为了防止重复复制吗?


刚开始读。

相关推荐

Global site tag (gtag.js) - Google Analytics