Riepilogo - Ordinamento personalizzato
Fa parte della sezione Programmazione orientata agli oggetti del percorso Swift di Coddy. Lezione 41 di 57.
Sfida
DifficileUna libreria musicale ordina e deduplica i brani usando i protocolli standard. Song ha title, artist, year e rating (1-5). Rendila Equatable e Hashable in base a title e artist, ignorando maiuscole e minuscole (la stessa canzone dello stesso artista), Comparable in base alla valutazione, dalla più alta alla più bassa, poi all'anno, dal più recente al più vecchio, e infine al titolo in ordine alfabetico, e CustomStringConvertible come Title - Artist (2019) **** con una stella per ogni punto di valutazione.
Completa playlist(_:), che rimuove i duplicati (mantenendo il primo) con un Set, ordina con sorted() e restituisce le descrizioni dei brani, poi duplicates removed: 1.
Il codice fornito legge i brani da righe nel formato title,artist,year,rating e stampa ogni riga restituita.
Il tuo codice va in Song.swift e Functions.swift. main.swift contiene il codice di input/output fornito e non può essere modificato.
Provalo tu
// Supplied input/output code: keep it as it is
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) }
Tutte le lezioni di Programmazione orientata agli oggetti
1Classi e oggetti
Lavorare con i fileDefinire le classiMetodi e selfInizializzatoriLe classi sono riferimentiRiepilogo - Tessera della biblioteca4Incapsulamento
Controllo degli accessiSola lettura dall’esternoProteggere lo statoInizializzatori che possono fallireRiepilogo - Conto bancario7Polimorfismo e tipi generici
PolimorfismoCasting dei tipiFunzioni genericheTipi genericiRipasso - Calcolatore di forme2Struct e tipi valore
Le structSemantica dei valoriMetodi mutantiStruct o classeRiepilogo - Articolo di inventario5Ereditarietà
SottoclassiSovrascrivere i metodiInizializzatori e superfinal e gerarchieRiepilogo - Gerarchia dei dipendenti8Protocolli standard
CustomStringConvertibleEquatableComparableHashableRiepilogo - Ordinamento personalizzato11Progetto: Gestione della biblioteca
Libri e utentiPrestito dei libriEsercitati da solo: Playground Swift