עדכון מילונים
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Swift של Coddy. שיעור 14 מתוך 56.
כותבים למילון באותו אופן שבו קוראים ממנו: באמצעות תחביר האינדקס.
var prices: [String: Int] = ["apple": 1]
prices["bread"] = 3 // מוסיף את המפתח
prices["apple"] = 2 // מעדכן מפתח קיים
prices["apple"] = nil // מסיר את המפתחשתי מתודות בעלות שם עושות את אותו הדבר באופן מפורש יותר:
prices.updateValue(5, forKey: "milk") // מחזירה את הערך הקודם, או nil
prices.removeValue(forKey: "bread") // מחזירה את הערך שהוסר, או nilהמתודות בעלות השם מחזירות את הערך הקודם, דבר שימושי כשצריך לדעת אם המפתח כבר היה קיים.
תבנית ברירת המחדל של גישה לפי מפתח מהשיעור הקודם משתלבת היטב עם שינוי ערכים. כך אפשר לבנות מונה בלי לכתוב if:
var counts: [String: Int] = [:]
for letter in ["a", "b", "a"] {
counts[letter, default: 0] += 1
}
// counts == ["a": 2, "b": 1]אתגר
בינוניקרא שורת קלט אחת: רשימה מופרדת בפסיקים של פעולות על מילון התחלתי. כל פעולה היא אחת מאלה:
set:<key>:<value>הוספה או עדכון (הערך הוא מספר שלם)add:<key>:<value>הוספת הערך לערך הקיים (יש להשתמש בתבנית של גישה עם ערך ברירת מחדל)del:<key>הסרת המפתח
לאחר החלת כל הפעולות לפי הסדר על מילון [String: Int] ריק בתחילה, הדפס את המפתחות בסדר אלפביתי, אחד בכל שורה, בתבנית <key>=<value>.
עבור הקלט set:a:5,add:a:3,set:b:1,del:b,add:c:2, הפלט הוא:
a=8
c=2נסו בעצמכם
let ops = readLine()!.components(separatedBy: ",")
var dict: [String: Int] = [:]
// TODO: נתחו כל op והחילו set/add/del; הדפיסו את ה-keys ממוינים עם הערכים שלהם
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
5פונקציות מסדר גבוה חלק 1
מיפוי (Map)סינון (Filter)צמצום (Reduce)שרשור map, filter ו-reduceסיכום – סטטיסטיקות מיליםתרגלו בעצמכם: Swift אונליין