Menu
Coddy logo textTech

Enums במשפטי 'switch'

חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Dart של Coddy. שיעור 61 מתוך 65.

אחד השימושים העוצמתיים ביותר ב-enum הוא השימוש בהם עם פקודות switch. כשמשלבים enum עם פקודות 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, מתבצעת בדיקה בזמן הקומפילציה שמבטיחה שהקוד שלך מטפל בכל תרחיש אפשרי.

challenge icon

אתגר

קל

צרו תוכנית שמנהלת את מצבו של דמות במשחק באמצעות טיפוסי enum והוראות 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

על התוכנית שלכם להדגים שימוש נכון בטיפוסי enum עם הוראות switch ולהראות כיצד השילוב הזה מאפשר ניהול מצבים בטוח מבחינת טיפוסים. הוראת ה-switch חייבת לטפל בכל ערכי ה-enum ולהחזיר את ההודעה המתאימה לכל מצב של הדמות. הקפידו לפעול לפי מוסכמות השמות של Dart ולהשתמש בהודעות המחרוזת המדויקות שצוינו למעלה.

נסו בעצמכם

import 'dart:io';

// TODO: הגדירו כאן את ה-enum ‏CharacterState

// TODO: צרו כאן את הפונקציה getStateMessage

void main() {
  // TODO: כתבו את הקוד שלכם למטה
  
  // צרו את המשתנה currentState והקצו לו את הערך CharacterState.idle
  
  // הדפיסו את הודעת המצב ההתחלתי
  
  // שנו את currentState ל-CharacterState.walking
  
  // הדפיסו את הודעת המצב המעודכנת
  
  // שנו את currentState ל-CharacterState.attacking
  
  // הדפיסו את הודעת המצב הסופית
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת התוכנית

תרגלו בעצמכם: קומפיילר Dart אונליין