Ajouter un étudiant
Fait partie de la section Logique et Flux du Journey Ruby de Coddy — leçon 49 sur 56.
Définissez une méthode add_student qui enregistre un nouvel étudiant dans le hash partagé student_records.
Le refus des doublons est la seule branche ; une fois qu'un étudiant existe, signalez-le et retournez sans écraser.
Défi
FacileAu sommet de votre fichier, gardez student_records = {}. Ensuite, définissez une méthode add_student(name, age, courses) qui :
- Si
nameest déjà une clé dansstudent_records, afficheStudent '<name>' already exists.et s'arrête (retourne). - Sinon, stocke
{ age: age, grades: [], courses: courses }sousnameet afficheStudent '<name>' added.
Au 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 voir les variables locales du script englobant, 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 à l'intérieur de la méthode.
Aide-mémoire
Utilisez une variable globale ($variable_name) afin que les méthodes puissent accéder aux variables définies en dehors de leur portée et les modifier :
$student_records = {}
def add_student(name, age, courses)
if $student_records.key?(name)
puts "Student '#{name}' already exists."
return
end
$student_records[name] = { age: age, grades: [], courses: courses }
puts "Student '#{name}' added."
endPoints clés :
- Ajoutez le préfixe
$pour rendre une variable globale (accessible à l'intérieur des méthodes) - Utilisez
.key?(name)pour vérifier si un hash contient déjà une clé - Utilisez
returnpour quitter une méthode prématurément après avoir géré un doublon
Essayez vous-même
$student_records = {}
# À FAIRE : def add_student(name, age, courses), se protéger contre les doublons,
# stocker { 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 - String Weaver4Blocs, Procs & Lambdas
Qu'est-ce qu'un bloc ?do..end vs AccoladesLe mot-clé yieldParamètres de blocProcs et LambdasRécapitulatif - Itérateur personnalisé7Hashes - Partie 2
Hash.new avec des valeurs par défautItérer sur les HashesHashes imbriquésFusion et transformationRécapitulatif - Compteur de fréquence10Projet - Dossiers étudiants
Présentation du projetAjouter un étudiant2Intervalles
Qu'est-ce qu'un intervalle ?Méthodes d'intervalleLes intervalles dans Case / WhenRécapitulatif - Pratique des intervalles5La puissance d'Enumerable
Select et RejectChaîner MapReduce / Injectcount, all?, any?, none?group_by et partitionsort_by, min_by, max_byRécapitulatif - Data Pipeline