التصفية حسب الفئة
جزء من قسم المنطق وتدفق التنفيذ في رحلة Swift على Coddy. الدرس 52 من 56.
الميزة التالية: دع اللاعب يختار فئة واطرح أسئلة من تلك الفئة فقط.
استخدم filter في بنك الأسئلة مع جعل الفئة هي الشرط (predicate)، ثم قم بتكرار النتيجة. نتيجة filter هي مصفوفة جديدة تماماً، بينما يظل البنك الأصلي كما هو.
let chosen = questions.filter { $0.0 == category }
for (_, text, _) in chosen {
print(text)
// ...
}إذا كان chosen فارغًا، فاطبع رسالة بديلة ودودة بدلاً من تشغيل الحلقة. هذا يمنع البرنامج من التوقف دون استجابة عندما يكتب المستخدم فئة غير موجودة.
التحدي
متوسطتحتوي بنك الأسئلة الموسع على ستة مدخلات عبر ثلاث فئات: math، و geo، و science.
اقرأ الفئة المختارة من السطر الأول من المدخلات، ثم اقرأ إجابة واحدة للاعب لكل سطر متبقٍ بالترتيب. قم بتصفية البنك حسب الفئة (مطابقة غير حساسة لحالة الأحرف)، ثم اطرح كل سؤال بالترتيب.
اطبع، لكل سؤال من الفئة المختارة:
- نص السؤال
correctأوwrongباستخدام التقييم المتساهل من الدرس السابق
انتهِ بـ Score: <n>/<m> حيث m هو عدد الأسئلة في الفئة. إذا كانت الفئة غير معروفة، اطبع Unknown category: <name> ولا شيء غير ذلك.
للمدخلات math في السطر 1 و 4 / 3.14 في الأسطر 2-3، المخرجات هي:
2 + 2?
correct
Value of pi to 2 decimals?
correct
Score: 2/2جرّب بنفسك
let questions: [(String, String, String)] = [
("math", "2 + 2?", "4"),
("math", "Value of pi to 2 decimals?", "3.14"),
("geo", "Capital of France?", "Paris"),
("geo", "Largest ocean?", "Pacific"),
("science", "Color of grass?", "green"),
("science", "H2O is?", "water")
]
let category = readLine()!
// مهام: التصفية حسب الفئة (غير حساس لحالة الأحرف)؛ إذا كانت فارغة، اطبع Unknown ...؛
// بخلاف ذلك، قم بالتكرار، واسأل، وصحح بتساهل، واطبع النتيجة: n/m
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
1النصوص بعمق
العد والفهارسحالة الأحرف وإزالة الفراغاتالبحث في النصوصتقسيم ودمج النصوصاستبدال النصوص الفرعيةمراجعة - التحقق من اسم المستخدم4المجموعات
إنشاء المجموعاتالاتحاد والتقاطعالطرح والفرق المتماثلالمجموعات الجزئية والشاملةمراجعة - تصفية الـ Tag7مشروع - متتبع العادات
نظرة عامة على المشروعتحديد كمكتمل2النطاقات والخطوات
المغلقة مقابل نصف المفتوحةالخطوة (Stride)دوال النطاقاتالنطاقات في Switchملخص - شبكة التقويم5الدوال من الرتبة العليا - الجزء الأول
MapFilterReduceربط Map و Filter و Reduceمراجعة - إحصائيات الكلماتتدرّب بنفسك: Playground لـ Swift