Menu
Coddy logo textTech

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.

challenge icon

Défi

Facile

Au sommet de votre fichier, gardez student_records = {}. Ensuite, définissez une méthode add_student(name, age, courses) qui :

  1. Si name est déjà une clé dans student_records, affiche Student '<name>' already exists. et s'arrête (retourne).
  2. Sinon, stocke { age: age, grades: [], courses: courses } sous name et affiche Student '<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.inspect

Le 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."
end

Points 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 return pour 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
quiz iconTestez-vous

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