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

تعريف القواميس

جزء من قسم المنطق والتدفق في رحلة 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، الدرس القادم يغطي هذا الجزء.

challenge icon

التحدي

سهل

اقرأ ثلاثة أسطر من المدخلات: الاسم، والبلد، والعمر كعدد صحيح. قم ببناء قاموس واحد يسمى person بمفاتيح من نوع String والقيم التي قرأتها (يبقى العمر Int، ستحتاج إلى نوع قيمة غير متجانس، راجع التلميح).

اطبع ثلاثة أسطر:

  1. عدد المدخلات في القاموس
  2. name=<value> باستخدام الوصول عبر الفهرس (subscript access)
  3. 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
quiz iconاختبر نفسك

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

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