Schüler hinzufügen
Teil des Abschnitts Logik und Ablauf der Ruby-Journey von Coddy. Lektion 49 von 56.
Definiere eine add_student-Methode, die einen neuen Schüler im gemeinsamen student_records-Hash registriert.
Das Ablehnen von Duplikaten ist der einzige Zweig: Sobald ein Schüler existiert, melde dies und kehre zurück, ohne ihn 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.
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 und Ablauf
1Strings im Detail
Überblick über String-MethodenString-InterpolationStrings durchlaufenSplitten und VerbindenRückblick – String Weaver4Blocks, Procs & Lambdas
Was ist ein Block?do..end vs. geschweifte KlammernDas Schlüsselwort yieldBlock-ParameterProcs und LambdasRückblick – Benutzerdefinierter Iterator7Hashes Teil 2
Hash.new mit StandardwertenHashes durchlaufenVerschachtelte HashesZusammenführen und TransformierenRückblick – Häufigkeitszähler10Projekt – Schülerdaten
ProjektübersichtSchüler hinzufügen2Bereiche
Was ist ein Bereich?BereichsmethodenBereiche in Case / WhenWiederholung – Übung zu Bereichen5Das Enumerable-Kraftpaket
Select und RejectMap verkettenReduce / Injectcount, all?, any?, none?group_by und partitionsort_by, min_by, max_byZusammenfassung – Datenpipeline8Fortgeschrittene Entscheidungsfindung
Case mit Klassen & Regexwhen mit mehreren WertenTernärer OperatorInline-if / unlessRückblick – NotenklassifiziererÜbe selbstständig: Online-Ruby-Compiler