Buch hinzufügen
Teil des Abschnitts Logik & Programmfluss der Ruby-Journey von Coddy. Lektion 29 von 56.
Füge die 1. Add Book option zur Menü-loop hinzu. Wenn der Benutzer sie auswählt, prompt nach title, author und genre des Buches, dann push einen neuen hash into das library-Array.
Jedes Buch startet ungelesen (read: false).
Aufgabe
EinfachErweitere die loop-Schleife für das Menü. Wenn die choice "1" ist:
- Gib mit
printdenpromptTitle:aus und lies dentitleein - Gib mit
printAuthor:aus und lies denauthorein - Gib mit
printGenre:aus und lies dasgenreein - Füge mit
pusheinhash{ title:, author:, genre:, read: false }intolibraryein - Gib
Book added!aus
Behalte das Verhalten für 5. Exit aus der vorherigen Lektion bei (gibt Goodbye! aus und bricht ab).
Für die Eingaben 1, The Hobbit, Tolkien, Fantasy und anschließend 5 endet die Ausgabe wie folgt:
Choose an option: Title: Author: Genre: Book added!
--- Library Manager ---
...
Choose an option: Goodbye!Probier es selbst
library = []
loop do
puts "--- Library Manager ---"
puts "1. Add Book"
puts "2. Search By Title"
puts "3. Filter By Genre"
puts "4. Mark As Read"
puts "5. Exit"
print "Choose an option: "
choice = gets.chomp
if choice == "5"
puts "Goodbye!"
break
end
# TODO: behandle choice == "1", frage nach title/author/genre,
# füge einen hash in library ein, print "Book added!"
end
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-Klassifizierer32D-Arrays
2D-Array GrundlagenZugriff auf 2D-ElementeIterieren über 2D-ArraysGängige 2D-MusterZusammenfassung – Matrix-Operationen6Projekt - Bibliotheksverwaltung
ProjektübersichtBuch hinzufügenÜbe selbstständig: Online-Ruby-Compiler