מעבר על מילונים
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Swift של Coddy. שיעור 15 מתוך 56.
איטרציה על מילון באמצעות for נותנת לך את שני החלקים של כל זוג בתור tuple:
let prices = ["apple": 1, "bread": 3, "milk": 4]
for (item, price) in prices {
print("\(item) costs \(price)")
}סדר האיטרציה אינו מובטח. הרץ את הלולאה פעמיים וייתכן שתראה רשומות בסדר שונה. כשיש חשיבות לסדר, מיין תחילה:
for (item, price) in prices.sorted(by: { $0.key < $1.key }) {
print("\(item): \(price)")
}הביטוי שבתוך sorted(by:) הוא סגירה: הוא משווה בין שני זוגות ($0 ו־$1) לפי המאפיין key שלהם. לסגירות יוקדש פרק משלהן בהמשך; לעת עתה התייחס לזה כאל מתכון למיון מילון.
שתי תכונות שימושיות נוספות: .keys ו-.values נותנות לך אוסף שמכיל רק את המפתחות או רק את הערכים.
אתגר
קלהמילון scores ממפה שמות של תלמידים לציוני Int. הדפס:
- כל רשומה בתבנית
<name>: <score>, ממוינות לפי שם בסדר אלפביתי, אחת בכל שורה Sum: <total>של כל הערכים (השתמש ב־.valuesוב־reduce)Above 70: <count>, כאשרcountהוא מספר הרשומות שהציון שלהן גדול ממש מ־70
עבור המילון שמוגדר כברירת מחדל, הפלט הוא:
Alice: 85
Bob: 60
Cara: 90
Dan: 72
Sum: 307
Above 70: 3נסו בעצמכם
let scores: [String: Int] = [
"Alice": 85, "Bob": 60, "Cara": 90, "Dan": 72
]
// TODO: להדפיס את הרשומות הממוינות; לחשב סכום באמצעות reduce על .values; לספור ערכים > 70
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
5פונקציות מסדר גבוה חלק 1
מיפוי (Map)סינון (Filter)צמצום (Reduce)שרשור map, filter ו-reduceסיכום – סטטיסטיקות מיליםתרגלו בעצמכם: Swift אונליין