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

البحث الاختياري

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

تُرجع فهارس القواميس دائمًا قيمة Optional: القيمة عندما يكون المفتاح موجودًا، وnil عندما لا يكون موجودًا. تُجبرك Swift على التعامل مع كلتا الحالتين.

let prices: [String: Int] = ["apple": 1, "bread": 3]
let p = prices["apple"]
print(p)                          // Optional(1)

ثلاث طرق اصطلاحية للتعامل مع Optional. اختر الطريقة التي تناسب الموقف.

1. if let: عالج كلا الفرعين بشكل صريح:

if let p = prices["apple"] {
    print("apple costs \(p)")
} else {
    print("unknown")
}

2. الدمج مع ??: وفّر قيمة بديلة مضمنة:

let p = prices["olive"] ?? 0    // 0

3. الوصول باستخدام الفهرس مع قيمة افتراضية: النتيجة نفسها، لكن القيمة الافتراضية تظل موجودة أيضًا إذا كتبت مجددًا إلى ذلك المفتاح:

var counts = ["a": 2]
counts["b", default: 0] += 1   // counts == ["a": 2, "b": 1]
challenge icon

التحدي

سهل

القاموس prices مُعطى. اقرأ سطرًا واحدًا من الإدخال: قائمة مفصولة بفواصل بالعناصر التي يريد المستخدم شراءها.

لكل عنصر، وبترتيب ظهوره في الإدخال، ابحث عنه في prices. اطبع سطرًا واحدًا لكل عنصر:

  • <item> @ <price> عندما يكون العنصر موجودًا في القاموس
  • <item> not sold خلاف ذلك

بعد سرد كل عنصر، اطبع سطرًا نهائيًا واحدًا: Total: <sum>. اعتبر العناصر المفقودة بتكلفة 0 باستخدام معامل الدمج مع nil.

بالنسبة للإدخال apple,bread,olive,milk، يكون الناتج:

apple @ 1
bread @ 3
olive not sold
milk @ 4
Total: 8

جرّب بنفسك

let prices: [String: Int] = ["apple": 1, "bread": 3, "milk": 4]
let items = readLine()!.components(separatedBy: ",")

// TODO: بحث لكل عنصر؛ اطبع '@ price' أو 'not sold'؛ اجمع مع ?? 0
quiz iconاختبر نفسك

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

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

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