Le module dictionary est une structure de données personnalisée qui fournit une interface pour manipuler des paires clé-valeur de manière efficace en Lua. Il offre de nombreuses méthodes pour ajouter, accéder, modifier et itérer sur les éléments du dictionnaire, facilitant ainsi la gestion des données dans vos scripts.
Le module dictionary 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 dictionnaires que nécessaire, à n'importe quel moment dans votre script. Chaque instance est indépendante et possède ses propres paires clé-valeur, ce qui vous permet de gérer plusieurs collections de données sans interférences.
Pour commencer, vous devez charger le module dictionary avec le ModuleLoader :
-- Chargement du ModuleLoader
ModuleLoader = dofile(global:getCurrentDirectory() .. [[\YayaToolsTouch\Module\ModuleLoader.lua]])(1)
-- Chargement du module dictionary
DictionaryModule = ModuleLoader:load("dictionary")
Une fois le module chargé, vous pouvez instancier un dictionnaire à tout moment dans votre script, en appelant la fonction DictionaryModule() autant de fois que nécessaire :
-- Création d'un nouveau dictionnaire vide
local myDict = DictionaryModule()
-- Création de plusieurs dictionnaires
local dict1 = DictionaryModule()
local dict2 = DictionaryModule()
local dict3 = DictionaryModule()
Chaque instance de dictionary est indépendante des autres. Vous pouvez les manipuler séparément sans qu'elles n'interfèrent entre elles.
Vous pouvez également initialiser un dictionnaire avec des données à partir d'une table existante en utilisant la méthode fromTable :
-- Création d'un dictionnaire à partir d'une table existante
local initialData = { key1 = "value1", key2 = "value2" }
local myDict = DictionaryModule():fromTable(initialData)
Voici un exemple illustrant comment utiliser le module dictionary 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 dictionary
DictionaryModule = ModuleLoader:load("dictionary")
-- Création de différents dictionnaires
local configSettings = DictionaryModule()
local userPreferences = DictionaryModule()
local scores = DictionaryModule()
-- Ajout de paires clé-valeur
configSettings:add("resolution", "1920x1080"):add("fullscreen", true)
userPreferences:add("language", "fr"):add("volume", 75)
scores:add("player1", 1000):add("player2", 850)
-- Accès aux valeurs
local resolution = configSettings:get("resolution")
local language = userPreferences:get("language")
-- Modification de valeurs
userPreferences:set("volume", 80)
-- Vérification de l'existence d'une clé
if configSettings:containsKey("fullscreen") then
-- Faire quelque chose
end
-- Affichage des paires clé-valeur en utilisant le Logger
Logger:log("Paramètres de configuration :")
configSettings:forEach(function(key, value)
Logger:log("- " .. key .. ": " .. tostring(value))
end)
Logger:log("\nPréférences utilisateur :")
userPreferences:forEach(function(key, value)
Logger:log("- " .. key .. ": " .. tostring(value))
end)
Logger:log("\nScores des joueurs :")
scores:forEach(function(key, value)
Logger:log("- " .. key .. ": " .. tostring(value))
end)
Créer plusieurs instances de dictionary vous permet de :
ModuleLoader = dofile(global:getCurrentDirectory() .. [[\YayaToolsTouch\Module\ModuleLoader.lua]])(1)
DictionaryModule = ModuleLoader:load("dictionary")
local myDict = DictionaryModule()
local anotherDict = DictionaryModule()
myDict:add("clé1", "valeur1")
local valeur = myDict:get("clé1")
myDict:set("clé1", "nouvelle valeur")
myDict:remove("clé1")
En suivant ces étapes, vous pouvez intégrer le module dictionary dans vos scripts et bénéficier de sa flexibilité en créant autant d'instances que nécessaire, quand vous le souhaitez, pour gérer vos données de manière efficace.
Crée un nouveau dictionnaire à partir d'une table en utilisant les indices de la table comme clés.
Syntaxe
local dict = dictionary:fromTableIndices(tbl)
Paramètres
Retourne
Crée un nouveau dictionnaire à partir d'une table en utilisant les clés et valeurs de la table.
Syntaxe
local dict = dictionary:fromTable(tbl)
Paramètres
Retourne
Crée un nouveau dictionnaire en utilisant les éléments de la table comme clés et compte les occurrences de chaque élément.
Syntaxe
local dict = dictionary:fromTableItems(tbl)
Paramètres
Retourne
Ajoute une paire clé-valeur au dictionnaire si la clé n'existe pas déjà.
Syntaxe
dictionary:add(key, value)
Paramètres
Retourne
Modifie la valeur associée à une clé existante dans le dictionnaire.
Syntaxe
dictionary:set(key, value)
Paramètres
Retourne
Récupère la valeur associée à une clé donnée.
Syntaxe
local value = dictionary:get(key)
Paramètres
Retourne
Récupère toutes les clés associées à une valeur spécifique.
Syntaxe
local keys = dictionary:getByValue(value)
Paramètres
Retourne
Recherche la première paire clé-valeur qui satisfait une condition donnée.
Syntaxe
local key, value = dictionary:find(predicate)
Paramètres
Retourne
Recherche toutes les paires clé-valeur qui satisfont une condition donnée.
Syntaxe
local results = dictionary:findAll(predicate)
Paramètres
Retourne
Récupère la première clé associée à une valeur donnée.
Syntaxe
local key = dictionary:getKey(value)
Paramètres
Retourne
Supprime une clé et sa valeur associée du dictionnaire.
Syntaxe
dictionary:remove(key)
Paramètres
Retourne
Vide le dictionnaire de toutes ses paires clé-valeur.
Syntaxe
dictionary:clear()
Paramètres
Aucun.
Retourne
Vérifie si une clé existe dans le dictionnaire.
Syntaxe
local exists = dictionary:containsKey(key)
Paramètres
Retourne
Vérifie si une valeur existe dans le dictionnaire.
Syntaxe
local exists = dictionary:containsValue(value)
Paramètres
Retourne
Vérifie si une paire clé-valeur spécifique existe dans le dictionnaire.
Syntaxe
local exists = dictionary:containsPair(key, value)
Paramètres
Retourne
Retourne le nombre de paires clé-valeur dans le dictionnaire.
Syntaxe
local count = dictionary:size()
Paramètres
Aucun.
Retourne
Fusionne un autre dictionnaire avec le dictionnaire actuel.
Syntaxe
dictionary:merge(other)
Paramètres
Retourne
Récupère toutes les clés du dictionnaire sous forme de liste.
Syntaxe
local keys = dictionary:getKeys()
Paramètres
Aucun.
Retourne
Récupère toutes les valeurs du dictionnaire sous forme de liste.
Syntaxe
local values = dictionary:getValues()
Paramètres
Aucun.
Retourne
Applique une fonction à chaque paire clé-valeur du dictionnaire.
Syntaxe
dictionary:forEach(func)
Paramètres
Retourne
Aucun.
Récupère un sous-ensemble du dictionnaire en fonction des clés fournies.
Syntaxe
local subDict = dictionary:subset(keys)
Paramètres
Retourne
Filtre les éléments du dictionnaire en fonction d'une condition.
Syntaxe
local filteredDict = dictionary:filter(condition)
Paramètres
Retourne
Inverse les clés et les valeurs du dictionnaire.
Syntaxe
local invertedDict = dictionary:invert()
Paramètres
Aucun.
Retourne
Vérifie si le dictionnaire est égal à un autre dictionnaire.
Syntaxe
local isEqual = dictionary:equals(other)
Paramètres
Retourne
Récupère une paire clé-valeur aléatoire du dictionnaire.
Syntaxe
local item = dictionary:randomItem()
Paramètres
Aucun.
Retourne
Transforme les clés et les valeurs du dictionnaire en utilisant une fonction.
Syntaxe
local mappedDict = dictionary:map(func)
Paramètres
Retourne
Transforme les clés du dictionnaire en utilisant une fonction.
Syntaxe
local newDict = dictionary:mapKeys(func)
Paramètres
Retourne
Transforme les valeurs du dictionnaire en utilisant une fonction.
Syntaxe
local newDict = dictionary:mapValues(func)
Paramètres
Retourne
Compte les occurrences de chaque valeur dans le dictionnaire.
Syntaxe
local counts = dictionary:valueCount()
Paramètres
Aucun.
Retourne
Sélectionne les n premiers éléments du dictionnaire.
Syntaxe
local firstItems = dictionary:nFirstItems(n)
Paramètres
Retourne
Sélectionne les n derniers éléments du dictionnaire.
Syntaxe
local lastItems = dictionary:nLastItems(n)
Paramètres
Retourne
Vérifie si au moins une paire clé-valeur satisfait une condition donnée.
Syntaxe
local result = dictionary:some(predicate)
Paramètres
Retourne
Vérifie si toutes les paires clé-valeur satisfont une condition donnée.
Syntaxe
local result = dictionary:every(predicate)
Paramètres
Retourne
Compte le nombre de paires clé-valeur qui satisfont une condition donnée.
Syntaxe
local count = dictionary:count(predicate)
Paramètres
Retourne
Retourne le nombre de paires clé-valeur dans le dictionnaire (identique à size()).
Syntaxe
local len = dictionary:length()
Paramètres
Aucun.
Retourne
Crée une copie du dictionnaire.
Syntaxe
local copiedDict = dictionary:copy()
Paramètres
Aucun.
Retourne
Retourne une table avec les mêmes paires clé-valeur que le dictionnaire.
Syntaxe
local enumeratedTable = dictionary:enumerate()
Paramètres
Aucun.
Retourne
Vérifie si le dictionnaire est vide.
Syntaxe
local empty = dictionary:isEmpty()
Paramètres
Aucun.
Retourne
Fusionne plusieurs dictionnaires en un seul.
Syntaxe
local mergedDict = dictionary:mergeMultiple(dictionaries)
Paramètres
Retourne
Le module dictionary implémente également plusieurs métaméthodes pour améliorer son intégration avec Lua.
Permet l'itération sur le dictionnaire en utilisant la boucle pairs().
for key, value in pairs(dictionary) do
-- ...
end
Permet d'obtenir la taille du dictionnaire en utilisant l'opérateur #.
local count = #dictionary
Définit le comportement de l'opérateur == pour comparer deux dictionnaires.
local areEqual = dictionary1 == dictionary2
Définit le comportement de l'opérateur + pour fusionner deux dictionnaires.
local mergedDict = dictionary1 + dictionary2
Définit le comportement de l'opérateur - pour soustraire les clés d'un dictionnaire à un autre.
local resultDict = dictionary1 - dictionary2
Le module dictionary offre une multitude de fonctionnalités pour gérer efficacement des paires clé-valeur dans vos scripts Lua. En exploitant ses méthodes, vous pouvez facilement manipuler, rechercher, filtrer et transformer vos données, rendant vos scripts plus modulaires et maintenables.
Note : Ce module est conçu pour être utilisé avec les outils YayaToolsTouch. Assurez-vous que tous les modules et dépendances requis sont correctement installés et configurés.
Si vous rencontrez des problèmes ou avez des questions concernant le module linkedList :