高效存储和迭代 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 中,每次添加新回调时对其进行排序。
这是添加格式:
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 中,每次添加新回调时对其进行排序。