cours n°3 · Découverte

Array, Set & Hash

Ordre, unicité, clés : trois boîtes, trois réflexes. À toi de choisir la bonne.

~11 min7 stations
▶ vidéo🧩 exercices📄 cheat sheet

42 secondes · sous-titres Français inclus · 8.4 Mo

Les 7 trucs que tu vas savoir faire

Leçon 3 : les Conteneurs

Regarde la leçon (42 s) : Array, Set, Hash — trois boîtes, trois réflexes, un seul bug quand tu te trompes.

L'ordre, avant tout

`fruits` doit contenir exactement 2 éléments : « pomme » à l'INDEX 0 et « poire » en dernier. L'index part de zéro, toujours.

Les doublons, hors

Convertis `mots` (Array avec doublons) en **Set** : il doit contenir « ruby » et « ia » UNE seule fois chacun — soit size 2.

La mémoire avec des clés

Complète `infos` : clé String « langue » => « ruby » et clé « niveau » => 1 (l'ENTIER, pas une String). Puis lis `infos["langue"]`.

Le triptyque

Trois boîtes, trois réflexes : `file` = ["ann", "bob", "cat"] dans l'ordre · `uniques` = un Set de 1, 1, 2 (size 2) · `scores` = { "bob" => 20 }.

Les boîtes dans la boîte

Compose : `groupe` est un Hash — clé « ruby » => un Array d'AU MOINS 2 prénoms dont « ann », clé « ia » => un Array d'au moins 1 prénom.

Leçon 3 : OK

Sans aide : `inventaire` — un Hash avec clé « boites » => un Set d'AU MOINS 2 noms (chaînes), et clé « total » => le nombre exact de boîtes (pas un chiffre en dur si tu changes le Set).

Partage la leçon

← tous les cours

📄 La feuille de chute

imprime-la, colle-la à ton écran, fais semblant que c'est ton idée

📄 Cheat sheet — Array · Set · Hash

Trois boîtes, trois réflexes. Le mauvais choix se paie en bugs.

Le réflexe, une fois pour toutes

Tu as… Tu prends Exemple
une suite, un ordre qui compte Array ["ann", "bob", "cat"]
des valeurs uniques Set Set.new([1, 1, 2]) # => {1, 2}
des noms → des valeurs Hash {"bob" => 20}

Array — l'ordre, avant tout

fruits = ["pomme", "poire"]
fruits[0]    # => "pomme"   l'index part de ZÉRO. Toujours.
fruits.last  # => "poire"
fruits << "figue"          # pousse à la FIN (pas au début !)

Piège n°1 : << ajoute en fin — si ta valeur doit être première, réécris le tableau.

Set — les doublons, hors

require "set"
mots = Set.new(["ruby", "ia", "ruby"])
mots.size          # => 2     "ruby" vit une seule fois
mots.is_a?(Array)  # => false Set ≠ Array

Piège n°1 : mots.uniq te rend un Array sans doublons — pas un Set. La leçon demande un Set ? C'est Set.new.

Hash — la mémoire avec des clés

infos = { "langue" => "ruby", "niveau" => 1 }
infos["langue"]   # => "ruby"
infos[:langue]    # => nil    :symbole et "chaîne" sont DEUX clés différentes

Piège n°1 : :langue ≠ "langue". Oublie les guillemets, oublie ta valeur — nil, sans crier gare. Piège n°2 : "1" ≠ 1. Ton niveau == 1 en dépend.

Les boîtes dans la boîte

groupe = { "ruby" => ["ann", "bob"], "ia" => ["cat"] }
groupe["ruby"][0]   # => "ann"

Rien d'exotique : une valeur de Hash peut être n'importe quoi — y compris un autre conteneur.

Le réflexe Ruby

list  = []                    # ordre
uniq  = Set.new(list)         # uniques (require "set")
table = {}                    # nommé

À ne plus jamais dire

  • "un tableau hashé" → un Hash (le tableau, c'est l'Array)
  • "la liste sans doublons" → un Set — et oui, ça existe
  • "j'ai trouvé la clé" → si c'est nil, tu n'as rien trouvé du tout 😉

SlopCourse Microduck — du slop au code propre.