Ajouter un étudiant
Fait partie de la section Logique et flux du Journey Ruby de Coddy. Leçon 49 sur 56.
Définis une méthode add_student qui inscrit un nouvel étudiant dans le hachage partagé student_records.
Le refus des doublons constitue la seule branche : si un étudiant existe déjà, signale-le et retourne sans écraser l’entrée existante.
Défi
FacileEn haut de votre fichier, conservez student_records = {}. Définissez ensuite une méthode add_student(name, age, courses) qui :
- Si
nameest déjà une clé destudent_records, afficheStudent '<name>' already exists.et retourne. - Sinon, stocke
{ age: age, grades: [], courses: courses }sousnameet afficheStudent '<name>' added.
En bas de votre fichier, remplacez le bloc de test par :
add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_student("Alice", 21, ["Art"])
puts student_records.inspectLe résultat attendu est :
Student 'Alice' added.
Student 'Bob' added.
Student 'Alice' already exists.
{"Alice"=>{:age=>20, :grades=>[], :courses=>["Math", "Physics"]}, "Bob"=>{:age=>22, :grades=>[], :courses=>["Biology", "Chemistry"]}}Comme les méthodes ne peuvent pas accéder aux variables locales du script qui les englobe, déclarez student_records avec $student_records (une variable globale) afin que la méthode puisse la lire et la mettre à jour. Utilisez également ce nom dans la méthode.
Essayez vous-même
$student_records = {}
# TODO: def add_student(name, age, courses), éviter les doublons,
# enregistrer { age:, grades: [], courses: }, afficher ajouté/existe déjà
add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_student("Alice", 21, ["Art"])
puts $student_records.inspect
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique et flux
1Les chaînes de caractères en profondeur
Aperçu des méthodes de chaînesInterpolation de chaînesParcourir les chaînesSplit et JoinRécapitulatif - Tisseur de chaînes4Blocs, Procs et Lambdas
Qu'est-ce qu'un bloc ?do..end ou accoladesLe mot-clé yieldParamètres de blocProcs et LambdasRécapitulatif - Itérateur personnalisé7Hashes, 2e partie
Hash.new avec valeurs par défautParcourir les hashesHashes imbriquésFusionner et transformerRécapitulatif - Compteur de fréquences10Projet - Dossiers des étudiants
Présentation du projetAjouter un étudiant2Plages
Qu’est-ce qu’une plage ?Méthodes des plagesPlages dans Case / WhenRécapitulatif - Exercices sur les plages5Puissance des Enumerable
Select et RejectChaînage de MapReduce / Injectcount, all?, any?, none?group_by et partitionsort_by, min_by, max_byRécapitulatif - Pipeline de donnéesEntraînez-vous par vous-même : Compilateur Ruby en ligne