مراجعة - الترتيب المخصص
جزء من قسم البرمجة كائنية التوجه في رحلة 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تعدد الأشكال والأنواع العامة
تعدد الأشكالتحويل الأنواعالدوال العامةالأنواع العامةمراجعة - حاسبة الأشكالتدرّب بنفسك: Playground لـ Swift