Hachages

Nous allons étudier dans cette section la classe Hash.

Les hachages ne sont rien d'autre que des tableaux spécialisés. Au lieu de n'accepter que des indices représentés par des nombres entiers (comme dans mon_tableau[3]), les hachages acceptent n'importe quel objet comme «index». Par exemple, vous pouvez écrire mon_hachage["une_chaine_de_caractères"].

Supposons que nous voulons enregistrer des informations concernant un ami. Nous pourrions utiliser un tableau, comme ceci:

ami = [ "Jean-Paul", "Goret", "Rue de l'église, 26", "Houtsiplou", "Liège" ]

Évidemment, ceci fonctionnera. Mais nous allons devoir nous souvenir que ami[0] pointe vers le prénom, ami[1] vers le nom de famille, et ainsi de suite. Ceci peut se révéler fort compliqué par la suite.

C'est exactement le type de problème qu'un hachage peut résoudre. Voici la définition d'un hachage en Ruby:

ami = {
    "prénom"          => "Jean-Paul",
    "nom de famille"  => "Goret",
    "adresse"         => "Rue de l'église, 26",
    "ville"           => "Houtsiplou",
    "province"        => "Liège"
}

[Warning]Avertissement

Remarquez bien qu'il faut utiliser des accolades pour créer un hachage. Les tableaux, quant à eux, se définissent par l'intermédiaire de crochets.

Comme les tableaux, il est tout à fait possible de rajouter par la suite des champs à un hachage:

ami["pays"] = "Belgique"

Comme les hachages n'utilisent pas que des indices numériques, on utilise le mot clef (en anglais: «key») pour les identifier. Un objet représenté à travers une clef est appelé valeur (en anglais: «value»).

Donc, dans l'exemple précédent, «prénom», «nom de famille» et «pays» sont des clefs. Leurs valeurs respectives sont «Jean-Paul», «Goret» et «Belgique».

Évidemment, les hachages possèdent des itérateurs. En voici quelques uns: