天天看點

Lua - 周遊table表

我們簡單看一下pairs、ipairs以及自定義按key值順序周遊的pairsBykeys這3中方式:

-- table表的操作

function pairsBykeys(t)
    local a = {}
    for n in pairs(t) do
        a[#a+1] = n
    end
    table.sort(a)
    local i = 0
    return function()
        i = i + 1
        return a[i], t[a[i]]
    end
end
           

-- table中元素為table類型時

table_item={
[1]=25,
[150002]=15000,
[150008]={150008},
[9]='碼農碼農!!',
[150010]=3002,
[2]={{25,},},
}
           

-- table中元素為非table類型時,按照表中排列順序進行周遊

table_item1={
1,5,6,"worker",{4},true
}

print("---pairs,根據key值的hash值進行周遊---")
for k,v in pairs(table_item) do
    print(k,v)
end
print("\n---ipairs,隻從key值為1處開始連續周遊---")
for k,v in ipairs(table_item) do
    print(k,v)
end
print("\n---pairsBykeys,根據key值由小到大進行周遊---")
for k,v in pairsBykeys(table_item) do
    print(k,v)
end
           

輸出如下:

---pairs,根據key值的hash值進行周遊---
2    table: 00BF9230
150008    table: 00BF94D8
1    25
150010    3002
9    碼農碼農!!
150002    15000

---ipairs,隻從key值為1處開始連續周遊---
1    25
2    table: 00BF9230

---pairsBykeys,根據key值由小到大進行周遊---
1    25
2    table: 00BF9230
9    碼農碼農!!
150002    15000
150008    table: 00BF94D8
150010    3002
           

相信大家看一遍後,便會對這3種方法的差別和用法一目了然了,接着可以試一下周遊table_item1表,看是否和注釋所說的一樣。