首页 > 代码库 > (原创) cocos2d-x 3.0+ lua 学习和工作(4) : 公共函数(5): 计算table元素个数:table.nums
(原创) cocos2d-x 3.0+ lua 学习和工作(4) : 公共函数(5): 计算table元素个数:table.nums
这里的函数主要用来做:计算table元素个数。参考资料为quick_cocos.
星月倾心贡献~~~
我们先看一段代码
local tbl = { [1] = 2, [2] = 2, [3] = 3 }print( "tbl length is " .. #tbl )
这段代码是获得tbl的长度,即元素个数。
输出:tbl length is 3
拥有三个元素,没有问题。我们注意到元素的下标是,即key值是:1, 2, 3。即tbl[1], tbl[2], tbl[3]。如果,我们把下标修改,key修改后会怎么样呢?
local tbl = { [1] = 2, [5] = 2, [3] = 3 }print( "tbl length is " .. #tbl )
输出:tbl length is 1
旁白不出来吼两句么~~~(小白:为什么是1,不是三个元素吗???)
table的#tbl方法获得的元素长度是只对数组有效的,并且一定是从1开始的,顺序递增查找,所以上诉中#tbl,查找1成立,接着查找2,没有找到,结束查找,返回结果:1。
再看两个例子:
local tbl = { [4] = 2, [5] = 2, [3] = 3 }print( "tbl length is " .. #tbl )输出:tbl length is 0
local tbl = { ["a"] = 2, ["b"] = 2, ["c"] = 3 }print( "tbl length is " .. #tbl )输出:tbl length is 0
现在进入本章正题,获得table的元素个数方法,代码如下
--[[-- 计算表格包含的字段数量-- lua table 的 “#” 操作只对依次排序的数值下标数组有效,table.nums() 则计算 table中所有不为 nil 的值的个数。-- @param t 要检查的表格(t表示是table)-- @return integer 返回表格的字段数量--]]function table.nums( t ) local count = 0 local t = checkTable( t ) for k, v in pairs( t ) do count = count + 1 end return countend
checkTable是我之前写的文章中的一个函数,附上链接:http://www.cnblogs.com/wodehao0808/p/4015648.html。
通过这个table.nums方法就能够获得说有元素了。附上示例:
local tbl = { [4] = 2, [5] = 2, [3] = 3 }print( "tbl length is " .. table.nums( tbl ) )输出:tbl length is 3
本章到此结束,小白,你明白没有...(小白:我智商251的,好不...。)
(星月:小白,原来你是250+1啊)
(小白:...)
再结束时再说明以下for循环的pairs和ipairs的区别:
pairs会返回key,value。能遍历table所有元素,但是,pairs遍历是随机遍历的,无序的。(星月:被这个特性吭过...)
ipairs则是遍历数组的,类似与#tbl获得元素个数方法。也是从1开始的,顺序递增查找。因为是递增查找,所以ipairs是有序查找。
唠叨到此结束~~~
作者使用 cocos2d-x 3.0 + lua学习和工作心得,未经作者允许,请勿转载!在此谢谢各位手下留情~~~
本文没有获得作者本人同意,不得转载,否则必追究相关责任。转载请注明出处!!~~
原文地址:http://www.cnblogs.com/wodehao0808/p/4021921.html
(原创) cocos2d-x 3.0+ lua 学习和工作(4) : 公共函数(5): 计算table元素个数:table.nums