Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

الـ Enums في جمل 'switch'

جزء من قسم Logic & Flow في رحلة Dart على Coddy — الدرس 61 من 65.

أحد أقوى تطبيقات الـ enums هو استخدامها مع جمل switch. فعندما تجمع بين الـ enums وجمل switch، فإنك تنشئ كوداً أكثر أماناً وأسهل في الصيانة.

إليك كيفية استخدام enum في جملة switch:

enum Status {
  pending,
  running,
  completed
}

Status currentStatus = Status.pending;

switch (currentStatus) {
  case Status.pending:
    print('Task is waiting to start');
    break;
  case Status.running:
    print('Task is currently in progress');
    break;
  case Status.completed:
    print('Task has been finished');
    break;
}

تكمن روعة استخدام enums مع جمل switch في أن Dart يمكنها التحقق من أنك قمت بمعالجة جميع قيم enum الممكنة. إذا نسيت تضمين case لإحدى قيم enum، فستقوم Dart بتحذيرك، مما يساعد في منع الأخطاء البرمجية في كودك.

هذا النهج أكثر أماناً بكثير من استخدام السلاسل النصية أو الأرقام في جمل switch، حيث يمكن أن تتسبب الأخطاء المطبعية في سلوك غير متوقع. فباستخدام التعدادات (enums)، تحصل على فحص في وقت التجميع (compile-time checking) يضمن أن الكود الخاص بك يتعامل مع كل سيناريو محتمل.

challenge icon

التحدي

سهل

قم بإنشاء برنامج يدير حالة شخصية في لعبة باستخدام التعدادات (enums) وجمل switch. مهمتك هي:

  1. تعريف enum يسمى CharacterState بالقيم التالية: idle، و walking، و running، و jumping، و attacking
  2. إنشاء متغير يسمى currentState من نوع CharacterState وتعيين القيمة CharacterState.idle له
  3. إنشاء دالة تسمى getStateMessage تأخذ معاملًا من نوع CharacterState وتعيد رسالة نصية بناءً على الحالة باستخدام جملة switch:
    • للحالة CharacterState.idle: تعيد "Character is standing still"
    • للحالة CharacterState.walking: تعيد "Character is moving slowly"
    • للحالة CharacterState.running: تعيد "Character is moving quickly"
    • للحالة CharacterState.jumping: تعيد "Character is in the air"
    • للحالة CharacterState.attacking: تعيد "Character is fighting"
  4. طباعة رسالة الحالة الأولية باستخدام الدالة بالتنسيق الدقيق: Initial state: Character is standing still
  5. تغيير currentState إلى CharacterState.walking
  6. طباعة رسالة الحالة المحدثة بالتنسيق الدقيق: Updated state: Character is moving slowly
  7. تغيير currentState إلى CharacterState.attacking
  8. طباعة رسالة الحالة النهائية بالتنسيق الدقيق: Final state: Character is fighting

يجب أن يوضح برنامجك الاستخدام الصحيح للتعدادات (enums) مع جمل switch، مبيناً كيف يوفر هذا المزيج إدارة حالة آمنة من حيث النوع (type-safe). يجب أن تتعامل جملة switch مع جميع قيم التعداد وتعيد الرسالة المناسبة لكل حالة من حالات الشخصية. تأكد من اتباع قواعد التسمية في لغة Dart واستخدام الرسائل النصية المحددة أعلاه تماماً.

ورقة مرجعية

تعمل التعدادات (Enums) بشكل جيد مع جمل switch للحصول على كود آمن من حيث النوع (type-safe):

enum Status {
  pending,
  running,
  completed
}

Status currentStatus = Status.pending;

switch (currentStatus) {
  case Status.pending:
    print('Task is waiting to start');
    break;
  case Status.running:
    print('Task is currently in progress');
    break;
  case Status.completed:
    print('Task has been finished');
    break;
}

تتحقق Dart من أن جميع قيم التعداد (enum) قد تمت معالجتها في جملة switch، مما يمنع الأخطاء ويوفر فحصاً أثناء وقت التجميع (compile-time checking).

جرّب بنفسك

import 'dart:io';

// TODO: قم بتعريف CharacterState enum هنا

// TODO: قم بإنشاء دالة getStateMessage هنا

void main() {
  // TODO: اكتب الكود الخاص بك أدناه
  
  // قم بإنشاء متغير currentState وقم بتعيينه إلى CharacterState.idle
  
  // اطبع رسالة الحالة الأولية
  
  // قم بتغيير currentState إلى CharacterState.walking
  
  // اطبع رسالة الحالة المحدثة
  
  // قم بتغيير currentState إلى CharacterState.attacking
  
  // اطبع رسالة الحالة النهائية
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow