الدرس 8 من 10
المصفوفات والصفوف
- 12 دقيقة
- 6 معايير للتصحيح
- 3 تلميحات
- إلى المطلوب
هدف الدرس
طول ثابت وأصل محفوظ
الشرح
number[] مصفوفة أرقام بأي طول. أما الصفّ (tuple) مثل [string, number] فطوله ثابت ولكل موضع فيه نوعه: الأوّل نصّ والثاني رقم.
والمترجم لا يستنتج الصفوف وحده: [["ليان", 82]] يُستنتج (string | number)[][]، فيضيع الفرق بين الاسم والنتيجة.
وreadonly Entry[] مصفوفة للقراءة فقط: ليس فيها push ولا sort ولا أي دالة تغيّرها في مكانها. ضعها على مُعاملات الدوال التي لا يحقّ لها أن تمسّ ما يصلها.
وهذا يكشف خطأً شائعًا: sort ترتّب المصفوفة الأصلية ثم تُرجعها نفسها، فيتغيّر ترتيب بيانات من استدعاك دون أن يطلب. انسخ أوّلًا: [...entries].sort(...).
المطلوب
عرّف type Entry = [string, number] وصِف به عناصر board، واجعل مُعامل ranked من نوع readonly Entry[]، بحيث تُرجع نسخة مرتّبة تنازليًّا بالنتيجة ولا تمسّ الأصل.
معايير التصحيح
6 معايير- لا أخطاء أنواع
- Entry صفّ: نصّ ثم رقم
- والترتيب المعكوس خطأ
- عناصر board معروفة الأنواع
- ranked تقبل مصفوفة للقراءة فقط
- ranked ترتّب نسخة ولا تمسّ الأصل