Podsumowanie — własne sortowanie
Część sekcji Programowanie obiektowe ścieżki Swift w Coddy. Lekcja 41 z 57.
Wyzwanie
TrudnyBiblioteka muzyczna sortuje utwory i usuwa duplikaty przy użyciu standardowych protokołów. Song ma właściwości title, artist, year i rating (1-5). Zaimplementuj dla niej protokoły Equatable i Hashable na podstawie title i artist, ignorując wielkość liter (ten sam utwór tego samego artysty), Comparable — według oceny od najwyższej do najniższej, następnie roku od najnowszego do najstarszego, a na końcu tytułu w kolejności alfabetycznej — oraz CustomStringConvertible, aby opis miał postać Title - Artist (2019) ****, z jedną gwiazdką za każdy punkt oceny.
Uzupełnij playlist(_:), która usuwa duplikaty (zachowując pierwszy wystąpienie) za pomocą Set, sortuje utwory za pomocą sorted() i zwraca ich opisy, a następnie duplicates removed: 1.
Dostarczony kod odczytuje utwory z wierszy w formacie title,artist,year,rating i wypisuje każdy zwrócony wiersz.
Umieść swój kod w plikach Song.swift i Functions.swift. Plik main.swift zawiera dostarczony kod wejścia/wyjścia i nie można go edytować.
Spróbuj swoich sił
// Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
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) }
Wszystkie lekcje w sekcji Programowanie obiektowe
1Klasy i obiekty
Praca z plikamiDefiniowanie klasMetody i selfInicjalizatoryKlasy są referencjamiPowtórzenie — karta biblioteczna4Hermetyzacja
Kontrola dostępuTylko do odczytu z zewnątrzOchrona stanuInicjalizatory, które mogą zawieśćPodsumowanie — konto bankowe7Polimorfizm i typy generyczne
PolimorfizmRzutowanie typówFunkcje generyczneTypy generycznePodsumowanie – kalkulator kształtów2Struktury i typy wartościowe
StrukturySemantyka wartościMetody modyfikująceStruktura czy klasaPodsumowanie – element inwentarza5Dziedziczenie
PodklasyPrzesłanianie metodInicjalizatory i superfinal i hierarchiePodsumowanie — hierarchia pracowników8Standardowe protokoły
CustomStringConvertibleEquatableComparableHashablePodsumowanie — własne sortowanie11Projekt: Zarządzanie biblioteką
Książki i czytelnicyWypożyczanie książekPoćwicz samodzielnie: Edytor online Swift