Student hinzufügen
Teil des Abschnitts Logik & Programmfluss der Ruby-Journey von Coddy — Lektion 49 von 56.
Definieren Sie eine add_student-Methode, die einen neuen Studenten im gemeinsamen student_records-Hash registriert.
Das Ablehnen von Duplikaten ist die einzige Verzweigung; sobald ein Student existiert, melden Sie dies und kehren Sie zurück, ohne zu überschreiben.
Aufgabe
EinfachBehalten Sie am Anfang Ihrer Datei student_records = {} bei. Definieren Sie dann eine Methode add_student(name, age, courses), die:
- Falls
namebereits ein Schlüssel instudent_recordsist,Student '<name>' already exists.ausgibt und zurückkehrt. - Andernfalls
{ age: age, grades: [], courses: courses }unternamespeichert undStudent '<name>' added.ausgibt.
Ersetzen Sie am Ende Ihrer Datei den Testblock durch:
add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_student("Alice", 21, ["Art"])
puts student_records.inspectDie erwartete Ausgabe ist:
Student 'Alice' added.
Student 'Bob' added.
Student 'Alice' already exists.
{"Alice"=>{:age=>20, :grades=>[], :courses=>["Math", "Physics"]}, "Bob"=>{:age=>22, :grades=>[], :courses=>["Biology", "Chemistry"]}}Da Methoden keine lokalen Variablen aus dem umschließenden Skript sehen können, deklarieren Sie student_records mit $student_records (einer globalen Variable), damit die Methode sie lesen und aktualisieren kann. Verwenden Sie diesen Namen auch innerhalb der Methode.
Spickzettel
Verwenden Sie eine globale Variable ($variable_name), damit Methoden auf Variablen zugreifen und diese ändern können, die außerhalb ihres Gültigkeitsbereichs definiert sind:
$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."
endWichtige Punkte:
- Stellen Sie ein
$voran, um eine Variable global zu machen (zugänglich innerhalb von Methoden) - Verwenden Sie
.key?(name), um zu prüfen, ob ein Hash bereits einen Schlüssel enthält - Verwenden Sie
return, um eine Methode vorzeitig zu beenden, nachdem ein Duplikat behandelt wurde
Probier es selbst
$student_records = {}
# TODO: def add_student(name, age, courses), Schutz gegen Duplikate,
# speichere { age:, grades: [], courses: }, gebe "added/already exists" aus
add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_student("Alice", 21, ["Art"])
puts $student_records.inspect
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Programmfluss
1Strings im Detail
String-Methoden im ÜberblickString-InterpolationIterieren über StringsSplit und JoinRückblick – String Weaver4Blöcke, Procs & Lambdas
Was ist ein Block?do..end vs. geschweifte KlammernDas yield-SchlüsselwortBlock-ParameterProcs und LambdasZusammenfassung – Eigener Iterator7Hashes Teil 2
Hash.new mit StandardwertenIterieren über HashesVerschachtelte HashesZusammenführen und TransformierenRückblick – Häufigkeitszähler10Projekt - Studentenverwaltung
ProjektübersichtStudent hinzufügen5Enumerable-Kraftpaket
Select und RejectMap-VerkettungReduce / Injectcount, all?, any?, none?group_by und partitionsort_by, min_by, max_byZusammenfassung – Data Pipeline8Fortgeschrittene Entscheidungslogik
Case mit Klassen & RegexMulti-Value whenTernärer OperatorInline if / unlessRückblick – Noten-Klassifizierer