Rückblick – Benutzerdefiniertes Sortieren
Teil des Abschnitts Objektorientierte Programmierung der Swift-Journey von Coddy. Lektion 41 von 57.
Aufgabe
SchwerEine Musikbibliothek sortiert und entfernt Duplikate aus Songs mithilfe der Standardprotokolle. Song hat title, artist, year und rating (1-5). Mache es zu Equatable und Hashable anhand von title und artist unter Ignorierung der Groß- und Kleinschreibung (dasselbe Lied desselben Künstlers), zu Comparable nach Bewertung von hoch nach niedrig, dann nach Jahr von neu nach alt und anschließend nach Titel in alphabetischer Reihenfolge, sowie zu CustomStringConvertible als Title - Artist (2019) **** mit einem Stern pro Bewertungspunkt.
Vervollständige playlist(_:), das mit einem Set Duplikate entfernt (wobei das erste erhalten bleibt), mit sorted() sortiert und die Beschreibungen der Songs zurückgibt, gefolgt von duplicates removed: 1.
Der bereitgestellte Code liest Songs als Zeilen im Format title,artist,year,rating ein und gibt jede zurückgegebene Zeile aus.
Dein Code gehört in Song.swift und Functions.swift. main.swift enthält den bereitgestellten Eingabe-/Ausgabecode und kann nicht bearbeitet werden.
Probier es selbst
// Gelieferter Ein-/Ausgabecode: belasse ihn wie er ist
var input: [String] = []
while let line = readLine() { input.append(line) }
let songs = input.map { line -> Song in
let p = line.split(separator: ",").map(String.init)
return Song(title: p[0], artist: p[1], year: Int(p[2])!, rating: Int(p[3])!)
}
for line in playlist(songs) { print(line) }
Alle Lektionen in Objektorientierte Programmierung
1Klassen und Objekte
Arbeiten mit DateienKlassen definierenMethoden und selfInitialisiererKlassen sind ReferenzenRückblick – Bibliotheksausweis4Kapselung
ZugriffskontrolleVon außen schreibgeschütztZustand schützenFehlschlagende InitialisiererRückblick – Bankkonto7Polymorphismus und Generika
PolymorphismusTypumwandlungGenerische FunktionenGenerische TypenZusammenfassung – Shape-Rechner2Strukturen und Werttypen
StrukturenWertsemantikVerändernde MethodenStruktur oder KlasseZusammenfassung – Inventarelement5Vererbung
UnterklassenMethoden überschreibenInitialisierer und superfinal und HierarchienRückblick – Mitarbeiterhierarchie8Standardprotokolle
CustomStringConvertibleEquatableComparableHashableRückblick – Benutzerdefiniertes Sortieren11Projekt: Bibliotheksverwaltung
Bücher und MitgliederBücher ausleihenÜbe selbstständig: Swift-Playground