Menu
Coddy logo textTech

עדכון מילונים

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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]
challenge icon

אתגר

בינוני

קרא שורת קלט אחת: רשימה מופרדת בפסיקים של פעולות על מילון התחלתי. כל פעולה היא אחת מאלה:

  • 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 ממוינים עם הערכים שלהם
quiz iconבחנו את עצמכם

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

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

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