高效存储和迭代 Lua 多级队列

Efficiently storing and iterating over Lua multi-level queue

这是添加格式:

AddToQueue( String identifier, function callfunc, int priority )

优先级保证为0到4,0为最高优先级。我当前的设置是这样的:

local tQueue = {
    [0] = {},
    [1] = {},
    [2] = {},
    [3] = {},
    [4] = {}
}

function AddToQueue( sName, funcCallback, iPriority )
    queue[iPriority or 0][sName] = funcCallback
end

function CallQueue()
    for i = 0, 4 do
        for _, func in pairs( queue[i] ) do
            local retval = func()

            if ( retval ~= nil ) then
                return retval
            end
        end
    end
end

这行得通,但我想知道是否有更好的方法来存储和迭代函数以防止每次调用都进行 5 对循环。谢谢!

如果您频繁迭代队列,并且很少添加新回调,那么您可以将所有内容存储在单个 table 中,每次添加新回调时对其进行排序。