ipairs與pairs的區別

ipairs 和pairs在lua中都是遍歷tbale的函數但是二者有差異函數

 

1.pairs遍歷table中的所有的key-vale 而ipairs會依據key的數值從1開始加1遞增遍歷相應的table[i]值lua

如:table1 = { key1 = "val1", key2 = "val2", "val3" }.net

pairs 會優先輸出沒有鍵的值,即先輸出"val3" ,再到key1 = "val1",再 key2 = "val2"。blog

ipairs 只會輸出沒有鍵的值。即只輸出"val3",其餘不會輸出。ip

 

 

pairs可以遍歷表中所有的key,並且除了迭代器自己以及遍歷表自己還可以返回nil;但是ipairs則不能返回nil,僅僅能返回數字0,假設遇到nil則退出。它僅僅能遍歷到表中出現的第一個不是整數的keytable

 

例程1:遍歷

 

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

    for key, value in ipairs(a) dotab

      print(key, value)數字

    end

 

結果:

 

    1    a1

    2    a2

    3    a3

 

例程2:

 

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

    for key, value in pairs(a) do

      print(key, value)

    end

 

 

結果:

 

    6    a5

    2    a2

    3    a3

    1    a1

    5    a4

 

例程3:

 

    tab1 = { key1 = "val1", key2 = "val2", "val3" }

    for k, v in pairs(tab1) do

        print(k .. " - " .. v)

    end

 

結果:

 

    1 - val3

    key1 - val1

    key2 - val2

 

例程4

 

    tab1 = { key1 = "val1", key2 = "val2", "val3" }

    for k, v in ipairs(tab1) do

        print(k .. " - " .. v)

    end

 

結果:

 

1 - val3

---------------------

 

 

轉載於:

https://blog.csdn.net/zwj695535100/article/details/83040127

相關文章
相關標籤/搜索