מצב הרשימה: isEmpty ו-isNotEmp
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Dart של Coddy. שיעור 2 מתוך 65.
לפני עבודה עם איברים ברשימה, חשוב לדעת אם הרשימה שלך מכילה פריטים כלשהם. Dart מספקת שתי תכונות פשוטות לבדיקת מצב הרשימה: isEmpty ו-isNotEmpty.
המאפיין isEmpty מחזיר true אם אין ברשימה איברים, ו-false אם יש בה לפחות איבר אחד. המאפיין isNotEmpty פועל בכיוון ההפוך - הוא מחזיר true כאשר יש איברים ברשימה ו-false כאשר היא ריקה.
List<String> emptyCart = [];
List<String> shoppingCart = ['apples', 'bread', 'milk'];
print(emptyCart.isEmpty); // true
print(emptyCart.isNotEmpty); // false
print(shoppingCart.isEmpty); // false
print(shoppingCart.isNotEmpty); // trueהמאפיינים האלה שימושיים במיוחד למניעת שגיאות כשמנסים לגשת לאיברים ברשימה. בדיקה אם רשימה ריקה לפני שמשתמשים במאפיינים כמו .first או .last עוזרת לך לכתוב קוד בטוח ואמין יותר.
אתגר
קלצרו תוכנית שמנהלת מערכת תור משימות באמצעות בדיקה אם רשימות המשימות ריקות או מכילות פריטים. התוכנית שלכם צריכה:
- לקרוא קלט מסוג מחרוזת שמייצג את שם התור
- לקרוא כמה קלטים מסוג מחרוזת שמייצגים משימות (הקלט יסתיים כשתתקבל מחרוזת ריקה)
- להשתמש במאפיין
isEmptyכדי לבדוק אם רשימת המשימות ריקה - להשתמש במאפיין
isNotEmptyכדי לבדוק אם רשימת המשימות מכילה משימות - להדפיס את מצב התור בפורמט המדויק שמוצג למטה
לדוגמה, אם שם התור הוא "Daily Tasks" והמשימות הן "Review emails", "Attend meeting", "Write report", התוכנית שלכם צריכה להציג:
Queue: Daily Tasks
Has tasks: true
Is empty: false
Task count: 3
Status: Ready for processingאם שם התור הוא "Weekend Tasks" ולא סופקו משימות (קלט ריק), התוכנית שלכם צריכה להציג:
Queue: Weekend Tasks
Has tasks: false
Is empty: true
Task count: 0
Status: No tasks to processהתוכנית שלכם חייבת להשתמש גם במאפיין isEmpty וגם במאפיין isNotEmpty כדי לקבוע את מצב התור. הודעת המצב צריכה להיות "Ready for processing" כשיש משימות, ו-"No tasks to process" כשהתור ריק.
נסו בעצמכם
import 'dart:io';
void main() {
// קראו את שם התור
String? queueName = stdin.readLineSync();
// קראו משימות עד שמתקבלת מחרוזת ריקה
List<String> tasks = [];
String? task;
while ((task = stdin.readLineSync()) != null && task!.isNotEmpty) {
tasks.add(task);
}
// TODO: כתבו את הקוד שלכם למטה
// השתמשו במאפיינים tasks.isEmpty ו-tasks.isNotEmpty כדי לבדוק את מצב התור
// קבעו את הודעת המצב המתאימה לפי קיומן של משימות
// הציגו את התוצאות
print('Queue: $queueName');
// הדפיסו אם יש משימות, אם התור ריק, את מספר המשימות ואת המצב
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת התוכנית
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 אונליין