Projektübersicht
Teil des Abschnitts Logik & Programmfluss der Ruby-Journey von Coddy. Lektion 48 von 56.
Du wirst ein kleines student records system als eine Reihe von Methoden erstellen, die sich alle eine verschachtelte Hash-Struktur teilen. Eine andere Struktur als beim Library Manager, diesmal keine Menüschleife, sondern nur Funktionen, die du fortlaufend erweitern wirst.
Der Zustand befindet sich in einem einzigen Hash der obersten Ebene:
student_records = {}Jeder Eintrag wird nach dem Namen verschlüsselt, wobei ein Hash-Wert das Alter, die Noten und die Kurse der Schülerin bzw. des Schülers enthält:
{
"Alice" => { age: 20, grades: [], courses: ["Math", "Physics"] }
}Jede Lektion fügt eine Methode hinzu, die auf diesem Hash arbeitet: add_student, add_grade, average_grade, list_by_course, top_students.
Aufgabe
AnfängerInitialisiere am Anfang deiner Datei einen leeren Hash namens student_records. Gib ihn dann mit inspect aus, damit der Test Folgendes sieht:
{}Das ist die gesamte Aufgabe; in dieser Lektion wird lediglich der gemeinsame Zustand für alles Folgende eingerichtet.
Probier es selbst
# TODO: initialisiere student_records = {} und gib es mit inspect aus
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
Ü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