שיטת enumerate
חלק מהיחידה יסודות במסלול ה-Swift של Coddy. שיעור 70 מתוך 86.
לפעמים, כשעוברים על מערך, צריך לדעת לא רק מהו האיבר, אלא גם מה המיקום שלו. אפשר לעקוב ידנית אחר האינדקס באמצעות משתנה מונה, אבל Swift מספקת פתרון נקי יותר: המתודה enumerated().
כשמפעילים את enumerated() על מערך, מתקבל רצף של זוגות, כאשר כל זוג מכיל את האינדקס ואת האיבר:
let colors = ["Red", "Green", "Blue"]
for (index, color) in colors.enumerated() {
print("\(index): \(color)")
}
// 0: Red
// 1: Green
// 2: Blueשימו לב כיצד אנחנו מפרקים כל tuple ישירות בלולאה באמצעות (index, color). כך יש לנו גישה לשני הערכים ללא קוד נוסף.
זה שימושי במיוחד כשצריך להציג רשימות ממוספרות או לבצע פעולות שתלויות במיקום של רכיב:
let tasks = ["Wake up", "Exercise", "Eat breakfast"]
for (index, task) in tasks.enumerated() {
print("Task \(index + 1): \(task)")
}
// משימה 1: להתעורר
// משימה 2: להתאמן
// משימה 3: לאכול ארוחת בוקרהשיטה enumerated() שומרת על הקוד שלך נקי וקריא, בהשוואה לניהול ידני של משתנה מונה נפרד.
אתגר
קלכתבו פונקציה formatWithPositions שמקבלת את items ומחזירה מחרוזת מעוצבת המציגה כל פריט עם מספר המיקום שלו.
השתמשו בשיטה enumerated() כדי לעבור על המערך ולבנות מחרוזת שבה לפני כל פריט מופיע מספר המיקום שלו, בספירה החל מ־1.
לוגיקה:
- עברו על המערך באמצעות
enumerated() - עבור כל איבר, צרו מחרוזת בתבנית
"position. item"(באמצעות מספור החל מ־1) - חברו את כל המחרוזות המעוצבות באמצעות תו ירידת שורה (
\n)
פרמטרים:
items([String]): מערך של מחרוזות לעיצוב
ערך מוחזר: מחרוזת אחת שבה כל פריט מופיע בשורה משלו, ולפניו מספר המיקום שלו (String). תבנית: "1. item1\n2. item2\n3. item3"
דוגמה: אם items הוא ["Apple", "Banana", "Cherry"], הפונקציה אמורה להחזיר:
"1. Apple\n2. Banana\n3. Cherry"הערה: אם המערך ריק, החזירו מחרוזת ריקה "".
נסו בעצמכם
func formatWithPositions(items: [String]) -> String {
// כתבו כאן קוד
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
7קלט/פלט בסיסי
פונקציית ההדפסהאינטרפולציה של מחרוזותקלט באמצעות ReadLineהמרת טיפוסיםחזרה – עד 120חזרה – אמת או שקר3ערכים אופציונליים
מהם ערכים אופציונלייםשליפת ערך באמצעות If LetGuard Letאופרטור איחוד עם Nilסיכום – שליפה בטוחה של ערך9לולאות
לולאת For-Inלולאת Whileלולאת Repeat-WhileBreakContinueחזרה – עצרתטווחים בלולאותלולאה מקוננתחזרה – קלט דינמיתרגלו בעצמכם: Swift אונליין