Menu
Coddy logo textTech

מעבר על מילונים

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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 נותנות לך אוסף שמכיל רק את המפתחות או רק את הערכים.

challenge icon

אתגר

קל

המילון scores ממפה שמות של תלמידים לציוני Int. הדפס:

  1. כל רשומה בתבנית <name>: <score>, ממוינות לפי שם בסדר אלפביתי, אחת בכל שורה
  2. Sum: <total> של כל הערכים (השתמש ב־.values וב־reduce)
  3. 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
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: Swift אונליין