首页 > 代码库 > (原创) 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