Le module priorityQueue est une implémentation d'une file de priorité en Lua. Une file de priorité est une structure de données qui permet de gérer des éléments en fonction de leur priorité. Dans cette implémentation, les éléments avec une priorité numérique plus faible sont considérés comme ayant une priorité plus élevée et sont traités en premier.
Le module priorityQueue est conçu pour être flexible et réutilisable. Après l'avoir chargé via le ModuleLoader, vous pouvez créer autant d'instances de files de priorité que nécessaire, à n'importe quel moment dans votre script. Chaque instance est indépendante et possède ses propres éléments.
Chargement du module
Pour commencer, vous devez charger le module priorityQueue avec le ModuleLoader :
-- Chargement du ModuleLoader
ModuleLoader = dofile(global:getCurrentDirectory() .. [[\YayaToolsTouch\Module\ModuleLoader.lua]])(1)
-- Chargement du module priorityQueue
PriorityQueue = ModuleLoader:load("priorityQueue")
Création d'instances de files de priorité
Une fois le module chargé, vous pouvez instancier une file de priorité en appelant la fonction PriorityQueue() :
-- Création d'une nouvelle instance de priorityQueue
local myQueue = PriorityQueue()
-- Vous pouvez créer plusieurs instances indépendantes
local taskQueue = PriorityQueue()
local eventQueue = PriorityQueue()
Chaque instance de priorityQueue est indépendante des autres. Vous pouvez les manipuler séparément sans qu'elles n'interfèrent entre elles.
Ajoute un élément à la file avec la priorité spécifiée.
Syntaxe
priorityQueue:put(item, priority)
Paramètres
Retourne
Retire et retourne l'élément avec la priorité la plus élevée (c'est-à-dire la priorité numérique la plus basse).
Syntaxe
local item = priorityQueue:pop()
Paramètres
Retourne
Vérifie si la file de priorité est vide.
Syntaxe
local empty = priorityQueue:isEmpty()
Paramètres
Retourne
Voici un exemple illustrant comment utiliser le module priorityQueue dans un script :
-- Chargement du ModuleLoader
ModuleLoader = dofile(global:getCurrentDirectory() .. [[\YayaToolsTouch\Module\ModuleLoader.lua]])(1)
-- Chargement du module Logger pour afficher les informations
Logger = ModuleLoader:load("Logger")(1)
-- Chargement du module priorityQueue
PriorityQueue = ModuleLoader:load("priorityQueue")
-- Création d'une nouvelle instance de priorityQueue
local taskQueue = PriorityQueue()
-- Ajout de tâches avec des priorités
taskQueue:put("Nettoyer la maison", 3)
taskQueue:put("Répondre aux emails", 1)
taskQueue:put("Faire les courses", 2)
-- Traitement des tâches en fonction de leur priorité
while not taskQueue:isEmpty() do
local task = taskQueue:pop()
Logger:log("Traitement de la tâche : " .. task)
end
-- Sortie attendue :
-- Traitement de la tâche : Répondre aux emails
-- Traitement de la tâche : Faire les courses
-- Traitement de la tâche : Nettoyer la maison
Explications :
Si vous rencontrez des problèmes ou avez des questions concernant le module linkedList :