Повторение — пользовательская сортировка
Часть раздела Объектно-ориентированное программирование путешествия по Swift на Coddy. Урок 41 из 57.
Задание
СложноМузыкальная библиотека сортирует песни и удаляет дубликаты с помощью стандартных протоколов. Song содержит title, artist, year и rating (1–5). Сделайте его Equatable и Hashable по title и artist, игнорируя регистр (одна и та же песня одного и того же исполнителя), Comparable — сначала по рейтингу от высокого к низкому, затем по году от нового к старому, затем по названию в алфавитном порядке, а CustomStringConvertible — в виде Title - Artist (2019) ****, где одна звезда соответствует одному баллу рейтинга.
Завершите playlist(_:): удалите дубликаты (сохраняя первый) с помощью Set, отсортируйте с помощью sorted() и верните описания песен, а затем duplicates removed: 1.
Предоставленный код считывает песни в виде строк title,artist,year,rating и выводит каждую возвращённую строку.
Ваш код должен находиться в Song.swift и Functions.swift. В main.swift находится предоставленный код ввода и вывода, его нельзя редактировать.
Попробуйте сами
// Предоставленный код ввода/вывода: оставьте его как есть
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) }
Все уроки раздела Объектно-ориентированное программирование
1Классы и объекты
Работа с файламиОпределение классовМетоды и selfИнициализаторыКлассы — это ссылкиПовторение — читательский билет4Инкапсуляция
Контроль доступаТолько чтение извнеЗащита состоянияИнициализаторы с возможностью сбояПовторение — банковский счёт7Полиморфизм и обобщения
ПолиморфизмПриведение типовОбобщённые функцииОбобщённые типыПовторение — калькулятор фигур10Паттерны проектирования. Часть 2
Паттерн делегированияПаттерн декораторПаттерн строительПаттерн состояния2Структуры и типы-значения
СтруктурыСемантика значенийИзменяющие методыСтруктура или классПовторение — элемент инвентаря5Наследование
ПодклассыПереопределение методовИнициализаторы и superfinal и иерархииПовторение — иерархия сотрудников8Стандартные протоколы
CustomStringConvertibleEquatableComparableHashableПовторение — пользовательская сортировка11Проект: Управление библиотекой
Книги и читателиВыдача книгПотренируйтесь самостоятельно: Песочница Swift