Récapitulatif - Tri personnalisé
Fait partie de la section Programmation orientée objet du Journey Swift de Coddy. Leçon 41 sur 57.
Défi
DifficileUne bibliothèque musicale trie et déduplique des chansons à l’aide des protocoles standard. Song possède title, artist, year et rating (1-5). Rendez-le Equatable et Hashable sur title et artist sans tenir compte de la casse (la même chanson du même artiste), Comparable par note décroissante, puis par année de la plus récente à la plus ancienne, puis par titre dans l’ordre alphabétique, et CustomStringConvertible sous la forme Title - Artist (2019) ****, avec une étoile par point de note.
Complétez playlist(_:), qui supprime les doublons (en conservant le premier) à l’aide d’un Set, effectue le tri avec sorted() et renvoie les descriptions des chansons, puis duplicates removed: 1.
Le code fourni lit les chansons sous forme de lignes title,artist,year,rating et affiche chaque ligne renvoyée.
Votre code doit se trouver dans Song.swift et Functions.swift. main.swift contient le code fourni d’entrée/sortie et ne peut pas être modifié.
Essayez vous-même
// Code d'entrée/sortie fourni : le garder tel quel
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) }
Toutes les leçons de Programmation orientée objet
1Classes et objets
Travailler avec des fichiersDéfinir des classesMéthodes et selfInitialiseursLes classes sont des référencesRécapitulatif - Carte de bibliothèque4Encapsulation
Contrôle d’accèsLecture seule depuis l’extérieurProtection de l’étatInitialiseurs pouvant échouerRécapitulatif - Compte bancaire7Polymorphisme et génériques
PolymorphismeConversion de typeFonctions génériquesTypes génériquesRécapitulatif - Calculateur de formes2Structures et types valeur
StructuresSémantique de valeurMéthodes mutantesStructure ou classeRécapitulatif - article d’inventaire5Héritage
Sous-classesRedéfinition des méthodesInitialiseurs et superfinal et hiérarchiesRécapitulatif - hiérarchie des employés8Protocoles standard
CustomStringConvertibleEquatableComparableHashableRécapitulatif - Tri personnalisé11Projet : Gestion de bibliothèque
Livres et membresEmprunter des livresEntraînez-vous par vous-même : Playground Swift