• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

(原创)cocos2d-x3.0+lua学习和工作(4):公共函数(5):计算table元素个数:table.nums ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

这里的函数主要用来做:计算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 count
end

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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Lua安全调用metatable的简单应用发布时间:2022-07-22
下一篇:
centos7安装lua发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap