(原創) 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 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM