這里的函數主要用來做:計算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學習和工作心得,未經作者允許,請勿轉載!在此謝謝各位手下留情~~~
本文沒有獲得作者本人同意,不得轉載,否則必追究相關責任。轉載請注明出處!!~~