מאפייני רשימה: ראשון ואחרון
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Dart של Coddy. שיעור 1 מתוך 65.
בעבודה עם רשימות, לעיתים קרובות צריך לגשת לאיבר הראשון או האחרון. במקום להשתמש במספרי אינדקס כמו [0] או [list.length - 1], Dart מספקת שתי תכונות נוחות שהופכות את זה לפשוט הרבה יותר.
המאפיין .first נותן לך את האיבר הראשון ברשימה, ואילו המאפיין .last נותן לך את האיבר האחרון. המאפיינים האלה קריאים יותר ופחות מועדים לשגיאות מחישוב מיקומי האינדקס.
List<String> planets = ['Mercury', 'Venus', 'Earth', 'Mars'];
String firstPlanet = planets.first; // 'Mercury'
String lastPlanet = planets.last; // 'Mars'המאפיינים האלה עובדים עם כל רשימה שאינה ריקה ומטפלים אוטומטית בחישובי האינדקס בשבילך. כך הקוד שלך נקי יותר וקל יותר להבנה כשצריך לעבוד עם האיברים בתחילת הרשימות שלך או בסופן.
אתגר
קלצרו תוכנית שמנתחת רשימת השמעה באמצעות גישה לשירים הראשון והאחרון. התוכנית שלכם צריכה:
- לקרוא קלט מסוג מחרוזת שמייצג את שם רשימת ההשמעה
- לקרוא כמה קלטים מסוג מחרוזת שמייצגים את שמות השירים (הקלט יסתיים כשתקבלו מחרוזת ריקה)
- להשתמש במאפיין
.firstכדי לקבל את השיר הראשון ברשימת ההשמעה - להשתמש במאפיין
.lastכדי לקבל את השיר האחרון ברשימת ההשמעה - להדפיס את ניתוח רשימת ההשמעה בפורמט המדויק שמוצג למטה
לדוגמה, אם שם רשימת ההשמעה הוא "My Favorites" והשירים הם "Bohemian Rhapsody", "Imagine", "Hotel California", התוכנית שלכם צריכה להציג:
Playlist: My Favorites
Total songs: 3
Opening track: Bohemian Rhapsody
Closing track: Hotel Californiaהתוכנית שלכם חייבת לטפל ברשימות השמעה עם כל מספר של שירים ולהשתמש במאפיינים .first ו-.last כדי לגשת לרצועות הפותחת והסוגרת.
נסו בעצמכם
import 'dart:io';
void main() {
// קרא את שם רשימת ההשמעה
String? playlistName = stdin.readLineSync();
// קרא שירים עד למחרוזת ריקה
List<String> songs = [];
String? song;
while ((song = stdin.readLineSync()) != null && song!.isNotEmpty) {
songs.add(song);
}
// TODO: כתוב את הקוד שלך למטה
// השתמש ב-songs.first וב-songs.last כדי לקבל את השיר הפותח ואת השיר המסיים
// הצג את ניתוח רשימת ההשמעה
print("Playlist: $playlistName");
print("Total songs: ${songs.length}");
// הדפס כאן את השיר הפותח ואת השיר המסיים
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת התוכנית
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 אונליין