Le module list est une implémentation personnalisée d'une structure de données de type liste en Lua. Il fournit une interface pour manipuler des collections ordonnées d'éléments, avec de nombreuses méthodes pour ajouter, accéder, modifier, et itérer sur les éléments de la liste. Ce module facilite la gestion des données séquentielles dans vos scripts.
Le module list 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 listes que nécessaire 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 list avec le ModuleLoader :
-- Chargement du ModuleLoader
ModuleLoader = dofile(global:getCurrentDirectory() .. [[\YayaToolsTouch\Module\ModuleLoader.lua]])(1)
-- Chargement du module list (sans l'instancier immédiatement)
listModule = ModuleLoader:load("list")
Une fois le module chargé, vous pouvez créer des instances de listes en appelant la fonction listModule() autant de fois que nécessaire :
-- Création d'une nouvelle instance de liste
local myList = listModule()
-- Ajout d'éléments à la liste
myList:add("élément1")
myList:add("élément2")
-- Création de plusieurs instances de listes
local fruits = listModule()
local legumes = listModule()
local boissons = listModule()
-- Ajout d'éléments à chaque liste
fruits:add("Pomme"):add("Banane")
legumes:add("Carotte"):add("Brocoli")
boissons:add("Eau"):add("Jus d'orange")
Chaque instance de liste possède ses propres éléments et méthodes, vous permettant de les manipuler séparément sans interférer les unes avec les autres.
Voici un exemple illustrant la création et l'utilisation de plusieurs instances de listes dans un script :
-- Chargement du ModuleLoader
ModuleLoader = dofile(global:getCurrentDirectory() .. [[\YayaToolsTouch\Module\ModuleLoader.lua]])(1)
-- Chargement du module Logger
Logger = ModuleLoader:load("Logger")(1)
-- Chargement du module list
local listModule = ModuleLoader:load("list")
-- Création de différentes listes
local toDoList = listModule()
local shoppingList = listModule()
local completedTasks = listModule()
-- Ajout d'éléments à la liste des tâches à faire
toDoList:add("Faire le ménage"):add("Écrire un script"):add("Répondre aux emails")
-- Ajout d'éléments à la liste de courses
shoppingList:add("Lait"):add("Pain"):add("Fromage")
-- Traitement des tâches
local task = toDoList:get(1) -- "Faire le ménage"
toDoList:remove(1)
completedTasks:add(task)
-- Affichage des listes
Logger:log("Tâches à faire :")
toDoList:forEach(function(item)
Logger:log("- " .. item)
end)
Logger:log("\nTâches complétées :")
completedTasks:forEach(function(item)
Logger:log("- " .. item)
end)
Logger:log("\nListe de courses :")
shoppingList:forEach(function(item)
Logger:log("- " .. item)
end)
Créer plusieurs instances de listes vous permet de :
Charger le ModuleLoader :
ModuleLoader = dofile(global:getCurrentDirectory() .. [[\YayaToolsTouch\Module\ModuleLoader.lua]])(1)
Charger le module list :
listModule = ModuleLoader:load("list")
Créer des instances de listes :
local myList = listModule()
local anotherList = listModule()
Utiliser les méthodes du module :
myList:add("Item 1")
local item = myList:get(1)
myList:remove(1)
En suivant ces étapes, vous pouvez facilement intégrer le module list dans vos scripts et bénéficier de sa flexibilité en créant autant d'instances que nécessaire pour gérer vos données de manière efficace.
Ajoute un élément à la fin de la liste.
Syntaxe
list:add(item)
Paramètres
Retourne
Récupère l'élément à la position spécifiée dans la liste.
Syntaxe
local item = list:get(index)
Paramètres
Retourne
Supprime l'élément à l'indice spécifié de la liste.
Syntaxe
list:remove(index)
Paramètres
Retourne
Supprime toutes les occurrences d'une valeur spécifique de la liste.
Syntaxe
list:removeValue(value)
Paramètres
Retourne
Retourne le nombre d'éléments dans la liste.
Syntaxe
local count = list:length()
Paramètres
Retourne
Recherche l'indice de la première occurrence d'un élément dans la liste.
Syntaxe
local index = list:indexOf(item)
Paramètres
Retourne
Vérifie si un élément existe dans la liste.
Syntaxe
local exists = list:contains(item)
Paramètres
Retourne
Fusionne une autre liste avec la liste actuelle.
Syntaxe
list:merge(anotherList)
Paramètres
Retourne
Inverse l'ordre des éléments dans la liste.
Syntaxe
list:reverse()
Paramètres
Retourne
Trie les éléments de la liste en utilisant une fonction de comparaison optionnelle.
Syntaxe
list:sort(comparator)
Paramètres
Retourne
Vide la liste de tous ses éléments.
Syntaxe
list:clear()
Paramètres
Retourne
Applique une fonction à chaque élément de la liste et retourne une nouvelle liste contenant les résultats.
Syntaxe
local newList = list:map(func)
Paramètres
Retourne
Filtre les éléments de la liste en fonction d'une condition, retournant une nouvelle liste des éléments satisfaisant la condition.
Syntaxe
local filteredList = list:filter(predicate)
Paramètres
Retourne
Applique une fonction à chaque élément de la liste.
Syntaxe
list:forEach(func)
Paramètres
Retourne
Récupère le dernier élément de la liste.
Syntaxe
local item = list:last()
Paramètres
Retourne
Supprime la première occurrence d'un élément spécifique de la liste.
Syntaxe
list:removeItem(item)
Paramètres
Retourne
Récupère les n premiers éléments de la liste.
Syntaxe
local newList = list:nFirstItems(n)
Paramètres
Retourne
Récupère les n derniers éléments de la liste.
Syntaxe
local newList = list:nLastItems(n)
Paramètres
Retourne
Vérifie si la liste est vide.
Syntaxe
local empty = list:isEmpty()
Paramètres
Retourne
Crée une copie de la liste actuelle.
Syntaxe
local newList = list:copy()
Paramètres
Retourne
Vérifie si tous les éléments de la liste satisfont une condition donnée.
Syntaxe
local result = list:every(predicate)
Paramètres
Retourne
Vérifie si au moins un élément de la liste satisfait une condition donnée.
Syntaxe
local result = list:some(predicate)
Paramètres
Retourne
Retourne un élément aléatoire de la liste.
Syntaxe
local item = list:random()
Paramètres
Retourne
Crée une nouvelle liste avec des éléments uniques de la liste actuelle.
Syntaxe
local uniqueList = list:unique()
Paramètres
Retourne
Compte le nombre d'occurrences d'un élément spécifique dans la liste.
Syntaxe
local occurrence = list:count(item)
Paramètres
Retourne
Crée une nouvelle liste à partir d'une table Lua standard.
Syntaxe
local newList = list:fromTable(tbl)
Paramètres
Retourne
Le module list implémente également plusieurs métaméthodes pour améliorer son intégration avec Lua.
Permet l'itération sur la liste en utilisant la boucle pairs().
for index, value in pairs(list) do
-- ...
end
Permet d'obtenir la taille de la liste en utilisant l'opérateur #.
local count = #list
Définit le comportement de l'opérateur == pour comparer deux listes.
local areEqual = list1 == list2
Définit le comportement de l'opérateur + pour fusionner deux listes.
local mergedList = list1 + list2
Définit le comportement de l'opérateur - pour soustraire les éléments d'une liste à une autre.
local resultList = list1 - list2
Le module list offre une multitude de fonctionnalités pour gérer efficacement des collections ordonnées d'éléments dans vos scripts Lua. En exploitant ses méthodes, vous pouvez facilement manipuler, rechercher, filtrer et transformer vos listes, rendant vos scripts plus modulaires et maintenables.
Si vous rencontrez des problèmes ou avez des questions concernant le module linkedList :