تحديث القواميس
جزء من قسم المنطق والتدفق في رحلة 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]التحدي
متوسطاقرأ سطراً واحداً من المدخلات: قائمة مفصولة بفاصلة من العمليات على قاموس ابتدائي. كل عملية هي واحدة مما يلي:
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ورقة مرجعية
قم بتعديل قاموس باستخدام الـ subscript أو الطرق المسماة:
prices["bread"] = 3 // إضافة
prices["apple"] = 2 // تحديث
prices["apple"] = nil // إزالة
prices.updateValue(5, forKey: "milk") // يعيد القيمة القديمة أو nil
prices.removeValue(forKey: "bread") // يعيد القيمة المحذوفة أو nilاستخدم نمط الـ subscript الافتراضي للتعديل بدون if:
var counts: [String: Int] = [:]
for letter in ["a", "b", "a"] {
counts[letter, default: 0] += 1
}
// counts == ["a": 2, "b": 1]جرّب بنفسك
let ops = readLine()!.components(separatedBy: ",")
var dict: [String: Int] = [:]
// TODO: تحليل كل عملية وتطبيق set/add/del؛ طباعة المفاتيح المرتبة مع القيم
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق والتدفق
1النصوص بعمق
العد والفهارسحالة الأحرف وإزالة الفراغاتالبحث في النصوصتقسيم ودمج النصوصاستبدال النصوص الفرعيةمراجعة - التحقق من اسم المستخدم4المجموعات
إنشاء المجموعاتالاتحاد والتقاطعالطرح والفرق المتماثلالمجموعات الجزئية والشاملةمراجعة - تصفية الـ Tag7مشروع - متتبع العادات
نظرة عامة على المشروعتحديد كمكتمل2النطاقات والخطوات
المغلقة مقابل نصف المفتوحةالخطوة (Stride)دوال النطاقاتالنطاقات في Switchملخص - شبكة التقويم5الدوال من الرتبة العليا - الجزء الأول
MapFilterReduceربط Map و Filter و Reduceمراجعة - إحصائيات الكلمات