1. 程式人生 > >lua中pairs 和 ipairs 的區別

lua中pairs 和 ipairs 的區別

1、table中儲存值的時候,是按照順序儲存的,儲存 k-v 的時候,是按照 k 的雜湊值儲存的。

2、ipairs --- 只能輸出 table 中的值,並且不可輸出nil,遇到 ni l就退出

   pairs --- 可以輸出 table 中的值與 k-v ,並且是按照先輸出值,再亂序輸出 k-v 的順序進行輸出,可以輸出 nil

3、以下是結論:

     1>單獨的值:兩者的輸出結果一致

     2>單獨的 k-v:再細分為  --- k 全部為數字(ipairs一定是需要從1開始,每次遞增1,遇到不連續的k就退出))、k 全部為非數字、k為數字與非數字的混合

     3>值與 k-v 的混合

4、以下是針對3的部分 ipairs 測試程式碼:

   

a = {[0] = "a1", [2] = "a2", [3] = "a3", [5] = "a4", [6] = "a5"} 

沒有結果輸出!!!因為純數字的 k 不是從 1開始的

a = {[1] = "a1", [2] = "a2", [3] = "a3", [5] = "a4", [6] = "a5"} 

table={n = 4, "Hello", [3] = "oi"
, m = 0, "World", a=1, b=2, "Lua","C#"}