Modifier des Hashes
Fait partie de la section Fondamentaux du Journey Ruby de Coddy — leçon 75 sur 88.
Les tables de hachage ne sont pas statiques une fois créées. Vous pouvez ajouter de nouvelles paires clé-valeur, mettre à jour des valeurs existantes et supprimer des entrées pendant l'exécution de votre programme.
Pour ajouter une nouvelle paire ou mettre à jour une valeur existante, assignez à la clé en utilisant des crochets :
person = {"name" => "Alice", "age" => 25}
person["city"] = "Paris" # Ajoute une nouvelle paire clé-valeur
person["age"] = 26 # Met à jour la valeur existante
puts person # Affiche : {"name"=>"Alice", "age"=>26, "city"=>"Paris"}Si la clé existe, la valeur est remplacée. Si elle n'existe pas, une nouvelle paire est ajoutée au hash.
Pour supprimer une paire clé-valeur, utilisez la méthode delete avec la clé que vous souhaitez supprimer :
person = {"name" => "Alice", "age" => 25, "city" => "Paris"}
person.delete("city")
puts person # Affiche : {"name"=>"Alice", "age"=>25}La méthode delete retourne la valeur qui a été supprimée, ce qui peut être utile si vous avez besoin de l'utiliser :
person = {"name" => "Alice", "age" => 25}
removed_age = person.delete("age")
puts removed_age # Affiche : 25Si vous essayez de supprimer une clé qui n'existe pas, Ruby retourne simplement nil sans lever d'erreur.
Défi
FacileLisez quatre lignes d'entrée :
- Un nom d'étudiant (chaîne de caractères)
- Une note initiale (entier)
- Une nouvelle note à mettre à jour (entier)
- Une nouvelle paire clé-valeur au format
key:value(par exemple,subject:Math)
Créez un hash appelé student avec les paires clé-valeur initiales suivantes :
"name"associé au nom de l'étudiant"grade"associé à la note initiale (en tant qu'entier)
Ensuite, effectuez ces modifications :
- Mettez à jour la clé
"grade"avec la nouvelle valeur de la note - Ajoutez une nouvelle paire clé-valeur en utilisant la clé et la valeur de la quatrième entrée (la valeur doit rester une chaîne de caractères)
- Supprimez la clé
"name"du hash et stockez la valeur supprimée
Affichez le nom supprimé sur la première ligne, puis affichez le hash final sur la deuxième ligne.
Par exemple, si les entrées sont Alice, 85, 92, et subject:Math, la sortie devrait être :
Alice
{"grade"=>92, "subject"=>"Math"}Si les entrées sont Bob, 70, 75, et status:passing, la sortie devrait être :
Bob
{"grade"=>75, "status"=>"passing"}Si les entrées sont Charlie, 100, 95, et note:excellent, la sortie devrait être :
Charlie
{"grade"=>95, "note"=>"excellent"}Aide-mémoire
Pour ajouter une nouvelle paire clé-valeur ou mettre à jour une valeur existante dans un hash, utilisez des crochets :
person = {"name" => "Alice", "age" => 25}
person["city"] = "Paris" # Ajoute une nouvelle paire clé-valeur
person["age"] = 26 # Met à jour la valeur existante
puts person # Affiche : {"name"=>"Alice", "age"=>26, "city"=>"Paris"}Si la clé existe, la valeur est remplacée. Si elle n'existe pas, une nouvelle paire est ajoutée.
Pour supprimer une paire clé-valeur, utilisez la méthode delete :
person = {"name" => "Alice", "age" => 25, "city" => "Paris"}
person.delete("city")
puts person # Affiche : {"name"=>"Alice", "age"=>25}La méthode delete retourne la valeur supprimée :
removed_age = person.delete("age")
puts removed_age # Affiche : 25Si vous essayez de supprimer une clé qui n'existe pas, Ruby retourne nil sans lever d'erreur.
Essayez vous-même
# Lire l'entrée
name = gets.chomp
initial_grade = gets.to_i
new_grade = gets.to_i
key_value_pair = gets.chomp
# À FAIRE : Écrivez votre code ci-dessous
# 1. Créer un hash appelé 'student' avec les clés "name" et "grade"
# 2. Mettre à jour la clé "grade" avec la nouvelle valeur de note
# 3. Analyser la variable key_value_pair et l'ajouter au hash
# 4. Supprimer la clé "name" et stocker la valeur supprimée
# Afficher le nom supprimé
puts removed_name
# Afficher le hash final
puts studentCette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fondamentaux
4Opérateurs, partie 2
Opérateurs logiques, partie 1Opérateurs logiques, partie 2Récapitulatif - Logique simpleOpérateurs logiques, partie 3Opérateurs logiques, partie 47Calculateur de partage de facture
Message de bienvenueSaisie de l'utilisateur10FizzBuzz avec une variante
Présentation du jeuLa méthode FizzBuzz2Variables et types de données
Nombres et variablesType de données StringType de données BooleanType de données SymbolVérification des types de donnéesConventions de nommageRécapitulatif - Création de variables5Prise de décision
Instruction IfIf - ElseRécapitulatif - Calculatrice simpleIf - Else imbriquésInstruction Unless8Boucles
Boucle For avec des intervallesBoucle WhileBreakNextRécapitulatif - FactorielleBoucle TimesBoucle UntilBoucles imbriquéesRécapitulatif - Entrée dynamique11Tableaux
Création de tableauxAccès aux éléments d'un tableauModification de tableauxMéthodes de tableauxRécapitulatif - Tableau de produitsRécapitulatif - Tableau inverséRaccourcis pour les tableaux14Les Hashes
Créer des HashesAccéder aux éléments d'un HashModifier des HashesMéthodes de HashRécapitulatif - Hash de produitLes symboles comme clés de Hash3Les opérateurs, partie 1
Opérateurs arithmétiquesOpérateur moduloRaccourcis arithmétiquesRécapitulatif - Calculs simplesOpérateurs de comparaison6Entrées/Sorties de base
Sortie avec putsSortie avec print et pSortie avec des variablesEntrée avec getsLa méthode chompConversion de typesRécapitulatif - Calculateur d'âgeRécapitulatif - Vrai ou Faux9Méthodes
Définir une méthodeParamètres de méthodeValeurs de retourRécapitulatif - Méthode SigmaRécapitulatif - Méthode de validationValeurs de paramètres par défaut12Itérer sur les collections
L'itérateur EachEach avec indexItérer sur les chaînes de caractèresMap et Collect