تعريف القواميس
جزء من قسم المنطق والتدفق في رحلة Swift على Coddy — الدرس 12 من 56.
القاموس هو مجموعة غير مرتبة من أزواج المفتاح/القيمة. يتم تحديد كل من نوع المفتاح ونوع القيمة عند إنشائه.
var prices: [String: Int] = [
"apple": 1,
"bread": 3,
"milk": 4
]
print(prices.count) // 3
print(prices.isEmpty) // falseتعليق النوع [String: Int] يُقرأ كـ "المفاتيح هي String، والقيم هي Int". يمكن لـ Swift عادةً استنتاجه من القيمة الحرفية، ولكن كتابته تجعل المبدئات الفارغة غير غامضة:
var counts: [String: Int] = [:]
// مقابل مصفوفة فارغة، والتي ستحتاج إلى نوع أيضًاقراءة مفتاح موجود تُرجع القيمة. قراءة مفتاح غير موجود تُرجع nil، الدرس القادم يغطي هذا الجزء.
التحدي
سهلاقرأ ثلاثة أسطر من المدخلات: الاسم، والبلد، والعمر كعدد صحيح. قم ببناء قاموس واحد يسمى person بمفاتيح من نوع String والقيم التي قرأتها (يبقى العمر Int، ستحتاج إلى نوع قيمة غير متجانس، راجع التلميح).
اطبع ثلاثة أسطر:
- عدد المدخلات في القاموس
name=<value>باستخدام الوصول عبر الفهرس (subscript access)country=<value>باستخدام الوصول عبر الفهرس (subscript access)
استخدم الصيغة القابلة للطباعة: عندما تقرأ قيمة القاموس كـ Any، قم بفك التغليف القسري (force-unwrap) لها قبل الطباعة.
بالنسبة للمدخلات Alice / UK / 30، يكون المخرج هو:
3
name=Alice
country=UKورقة مرجعية
يخزن القاموس (dictionary) أزواج مفتاح/قيمة بأنواع ثابتة للمفاتيح والقيم:
var prices: [String: Int] = [
"apple": 1,
"bread": 3,
"milk": 4
]
print(prices.count) // 3
print(prices.isEmpty) // falseإنشاء قاموس فارغ مع تحديد صريح للنوع:
var counts: [String: Int] = [:]استخدم [String: Any] لأنواع القيم غير المتجانسة (أنواع مختلطة):
var person: [String: Any] = [
"name": "Alice",
"age": 30
]جرّب بنفسك
let name = readLine()!
let country = readLine()!
let age = Int(readLine()!)!
// مهام: قم بإنشاء [String: Any] يسمى person، واطبع count و name و country
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق والتدفق
1النصوص بعمق
العد والفهارسحالة الأحرف وإزالة الفراغاتالبحث في النصوصتقسيم ودمج النصوصاستبدال النصوص الفرعيةمراجعة - التحقق من اسم المستخدم4المجموعات
إنشاء المجموعاتالاتحاد والتقاطعالطرح والفرق المتماثلالمجموعات الجزئية والشاملةمراجعة - تصفية الـ Tag7مشروع - متتبع العادات
نظرة عامة على المشروعتحديد كمكتمل2النطاقات والخطوات
المغلقة مقابل نصف المفتوحةالخطوة (Stride)دوال النطاقاتالنطاقات في Switchملخص - شبكة التقويم5الدوال من الرتبة العليا - الجزء الأول
MapFilterReduceربط Map و Filter و Reduceمراجعة - إحصائيات الكلمات