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, מתבצעת בדיקה בזמן הקומפילציה שמבטיחה שהקוד שלך מטפל בכל תרחיש אפשרי.
אתגר
קלצרו תוכנית שמנהלת את מצבו של דמות במשחק באמצעות טיפוסי enum והוראות switch. המשימה שלכם היא:
- הגדירו טיפוס enum בשם
CharacterStateעם הערכים הבאים:idle,walking,running,jumpingו-attacking - צרו משתנה בשם
currentStateמסוגCharacterStateוהקצו לו את הערךCharacterState.idle - צרו פונקציה בשם
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" - הדפיסו את הודעת המצב ההתחלתית באמצעות הפונקציה בפורמט המדויק:
Initial state: Character is standing still - שנו את
currentStateל-CharacterState.walking - הדפיסו את הודעת המצב המעודכנת בפורמט המדויק:
Updated state: Character is moving slowly - שנו את
currentStateל-CharacterState.attacking - הדפיסו את הודעת המצב הסופית בפורמט המדויק:
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
// הדפיסו את הודעת המצב הסופית
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת התוכנית
1מניפולציות מתקדמות ברשימות
מאפייני רשימה: ראשון ואחרוןמצב הרשימה: isEmpty ו-isNotEmpהיפוך רשימההוספה לרשימה: insertהסרת פריטים מרשימה: removeWhereחיפוש ברשימה: indexOfמיון רשימהערבוב רשימהסיכום – מארגן רשימות4מניפולציה מתקדמת של Map
מעבר על Mapבדיקה אם מפתחות וערכים קיימיםמאפייני Map: מפתחות וערכיםהוספה מותנית: putIfAbsentהסרת רשומות מ־MapMaps מקונניםסיכום – עדכון מלאי2פעולות פונקציונליות על רשימות
טרנספורמציה באמצעות 'map'סינון באמצעות 'where'שימוש ב-'.toList()'בדיקת תנאים באמצעות 'any'תנאים באמצעות 'every'איתור באמצעות 'firstWhere'סיכום – סינון נתונים5פרויקט: חישוב עגלת קניות
הגדרת הפרויקטהוספת פריטים לעגלה3קבוצות
מהי קבוצה?יצירת קבוצההוספה והסרה מקבוצותבדיקת נוכחות של איברים בקבוצההמרת רשימה לקבוצהאיחוד קבוצותחיתוך קבוצותהפרש קבוצותסיכום – רשימת אורחים ייחודית6טיפול בסיסי בשגיאות
מהן חריגות?בלוק ה-try-catchתפיסת חריגות באמצעות onבלוק ה-finallyהשלכת חריגהסיכום – חלוקה בטוחה9טיפוסי מנייה (Enums)
מה הם Enums?הגדרת Enum פשוטשימוש ב-Enums במשתניםEnums במשפטי 'switch'סיכום – רמזורתרגלו בעצמכם: קומפיילר Dart אונליין