1. 程式人生 > >如何在lua中遍歷非連續ID迭代的能力

如何在lua中遍歷非連續ID迭代的能力

問題引入

lua的強大之處,其實就是table的結構型別,它幾乎無所不能。 有時候我們要通過ID去配置一些屬性表的時候, 往往初始位置不是1. 這樣使用ipairs就無法進行有序的遍歷。所以通過lua迭代器的原理,我們拓展如下。

it檔案程式碼如下

local it = {}

function it:ipairs(form)
    local tmp={}
    do
        for k,v in pairs(form) do
            table.insert( tmp,k )
        end
    end
    table.sort(tmp)
    local i=0
    return function()
        i=i+1
        local id=tmp[i]
        return id,form[id]
    end
end



return it

如何使用(記得require it模組)

local example=
{
    [100]="haha1"
    [103]="haha2"
    [104]="haha3"
}

for i,v in it:ipairs(example) do
    print(i,v)
end

是不是很完美!如果困惑和遺漏歡迎指正