FAQ RéseauxConsultez toutes les FAQ
Nombre d'auteurs : 6, nombre de questions : 57, dernière mise à jour : 20 octobre 2020 Ajouter une question
La FAQ réseaux avec toutes vos questions réponses
Une table de hachage est un tableau qui à une clé (typiquement une chaîne de caractère) associe une valeur.
Un exemple s'impose : Imaginons que je veuille stocker la date de naissance de tous mes amis. Et bien sans les tables de hachage, laissez moi vous dire que vous avez intérêt à ne pas avoir beaucoup d'amis.
C'est simple, vous avez deux solutions : soit l'on crée une variable pour chaque personne (%agesophie, %ageeric...), soit on fait une variable globale contenant toutes les dates et puis on fait appel aux tokens.
Pour le second cas, vous avez intérêt à avoir une bonne mémoire pour vous rappeler que la date de naissance de machin est en troisième position, celle de truc en 5ème...
Pour le premier cas, vous avez compris le problème...
La solution, c'est la table de hachage ! Voici comment ça va se présenter :
Code : | Sélectionner tout |
1 2 3 4 | Sophie -> 23 12 88 Eric -> 12 03 87 Loïc -> 03 02 85 ... |
Ainsi leur utilisation accélère le fonctionnement de votre script. Je vous recommande donc d'user et d'abuser de ces petites merveilles.
Pour créer une hashtable :
Code : | Sélectionner tout |
/hmake -s <nom> N
Code : | Sélectionner tout |
/hmake hashtable 10
Code : | Sélectionner tout |
/hadd <nom de la table> <clé> <valeur>
Pour supprimer une clé :
Code : | Sélectionner tout |
/hdel <nom de la table> clé
Code : | Sélectionner tout |
/hinc <nom> <clé> et /hdec <nom> <clé>
Code : | Sélectionner tout |
/hsave <nom de la table> <nom du fichier>
Code : | Sélectionner tout |
/hsave hashtable hashtable.txt
Pour charger une table précédemment sauvegardée :
Code : | Sélectionner tout |
/hload <nom de la table> <nom du fichier>
exemple
Code : | Sélectionner tout |
//hmake table 10 | hload table hashtable.txt
Enfin, pour supprimer une table de la mémoire vive, il faut utiliser :
Code : | Sélectionner tout |
/hfree <nom de la table>
N'oubliez pas de vider la mémoire vive une fois que vous n'utilisez plus une table de hachage ! Si vous ne le faites pas, en plus de vous encombrer, vous ne pourrez plus créer une table du nom de celle que vous venez de fermer, ce qui peut être gênant quand on a plusieurs alias se servant de la même table...
Passons aux fonctions permettant d'utiliser les hashtables.
Il n'y en a que trois: $hget ; $hmatch et $hfind, mais elles peuvent utilisée de bien des façons.
On commence par $hget() qui permet de retrouver la valeur d'une clé.
Code : | Sélectionner tout |
$hget(<nom de la table>,<clé>)
Si vous voulez tester l'existence d'une table de hachage, la fonction $hget(<nom de la table>) retournera le nom de la table si elle existe, la chaîne vide ($null) sinon. Ca peut être utile.
Moins important, si l'on remplace <nom de la table> par un entier la fonction retourne le nom de la nième table.
Passons à $hmatch(). Elle permet de retrouver le nom d'une clé.
Code : | Sélectionner tout |
$hmatch(<nom de la table>,<chaîne avec jokers>,<n>)
exemple
Code : | Sélectionner tout |
$hmatch(<nom de la table>,*,0)
Les fonction $hget() et $hmatch() se combinent très bien !
Code : | Sélectionner tout |
$hget(<nom de la table>,$hmatch(<nom>,<chaîne>,<n>)
La fonction $hmatch() permet aussi de rechercher dans les données plutôt que dans les clés (mais elle retournera toujours une clé) grâce à un .data après la parenthèse fermante.
Enfin, $hfind est équivalente à $hmatch() (en réalité dans la documentation on ne trouve pas la présentation de $hmatch() mais celle de $hfind(), mais je vous rassure, $hmatch() fonctionne très bien aussi)...
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.