Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

تحديث القواميس

جزء من قسم المنطق والتدفق في رحلة Swift على Coddy. الدرس 14 من 56.

تكتب في القاموس بنفس الطريقة التي تقرأ بها منه: باستخدام الرمز المنخفض (subscript).

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

تُرجع الطرق المسماة القيمة السابقة، وهو أمر مفيد عندما تحتاج إلى معرفة ما إذا كان المفتاح موجوداً بالفعل.

يتسلسل نمط الفهرس الافتراضي (default-subscript pattern) من الدرس السابق بشكل مثالي مع التعديل (mutation)، وهذه هي الطريقة التي تبني بها عداداً دون كتابة 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> إضافة القيمة إلى القيمة الموجودة (استخدم نمط default-subscript)
  • 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: تحليل كل عملية وتطبيق set/add/del؛ طباعة المفاتيح المرتبة مع القيم
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق والتدفق

تدرّب بنفسك: Playground لـ Swift