Rangkuman, Pengurutan Kustom
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Swift di Coddy. Pelajaran 41 dari 57.
Tantangan
SulitSebuah library musik mengurutkan lagu dan menghapus duplikat menggunakan protokol standar. Song memiliki title, artist, year, dan rating (1-5). Buat agar Song mematuhi Equatable dan Hashable berdasarkan title dan artist tanpa membedakan huruf besar dan kecil (lagu yang sama oleh artis yang sama), mematuhi Comparable dengan urutan rating dari tertinggi ke terendah, lalu tahun dari terbaru ke terlama, lalu judul menurut abjad, serta mematuhi CustomStringConvertible dengan format Title - Artist (2019) ****, dengan satu bintang untuk setiap poin rating.
Lengkapi playlist(_:), yang menghapus duplikat (dengan mempertahankan kemunculan pertama) menggunakan Set, mengurutkan dengan sorted(), lalu mengembalikan deskripsi lagu, kemudian duplicates removed: 1.
Kode yang disediakan membaca lagu dari baris dengan format title,artist,year,rating dan mencetak setiap baris yang dikembalikan.
Tulis kodemu di Song.swift dan Functions.swift. main.swift berisi kode input/output yang disediakan dan tidak boleh diedit.
Coba sendiri
// Kode input/output yang disediakan: biarkan tetap seperti semula
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) }
Semua pelajaran di Pemrograman Berorientasi Objek
1Class dan Object
Bekerja dengan FileMendefinisikan ClassMethod dan selfInitializerClass adalah ReferensiUlasan: Kartu Perpustakaan4Enkapsulasi
Kontrol AksesHanya Bisa Dibaca dari LuarMelindungi StateInitializer yang Bisa GagalRangkuman: Rekening Bank7Polimorfisme dan Generik
PolimorfismeKonversi TipeFungsi GenerikTipe GenerikRangkuman: Kalkulator Bentuk2Struct dan Tipe Nilai
StructSemantik NilaiMethod yang Mengubah NilaiStruct atau classRangkuman, Item Inventaris11Proyek: Manajemen Perpustakaan
Buku dan AnggotaPeminjaman BukuLatihan sendiri: Playground Swift