عبارات where على الامتدادات
استخدم where على امتدادات الأنواع و Protocols لإضافة واجهات API فقط عند استيفاء القيود، مثل Array where Element: Equatable و Collection where Element == Int .
عبارات where على الامتدادات درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 3 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 3 دروس في المجموع.
لماذا الامتدادات المقيّدة؟
أضيفوا واجهات برمجة التطبيقات فقط عندما تستوفي الأنواع القيود، وذلك باستخدام where في الامتدادات:
- امتدادات الأنواع، مثل
Array - امتدادات البروتوكولات، مثل
Collection - قيود المطابقة التامة، مثل
Element == Int
امتداد نوع مع قيد
أضيفوا أساليب إلى Array فقط عندما يكون Element متوافقًا مع Equatable. ولن تظهر واجهات برمجة التطبيقات هذه للمصفوفات التي لا تتوافق عناصرها مع Equatable.
extension Array where Element: Equatable {
func removing(_ value: Element) -> [Element] {
filter { $0 != value }
}
func containsAll(_ others: [Element]) -> Bool {
others.allSatisfy(self.contains)
}
}
print([1,2,3].removing(2)) // [1,3]
print(["a","b"].containsAll(["b"])) // trueامتداد بروتوكول باستخدام where
يضيف امتداد البروتوكول واجهة برمجة تطبيقات إلى جميع الأنواع المتوافقة عندما يتحقق القيد، وهنا لأي Collection تتكون عناصره من النوع Comparable.
extension Collection where Element: Comparable {
var isSorted: Bool {
// Pair each element with the next; ensure non-decreasing order
zip(self, dropFirst()).allSatisfy(<=)
}
}
print([1,2,3].isSorted) // true
print([3,1,2].isSorted) // falseقيود المطابقة التامة
استخدموا قيود المساواة لواجهات برمجة التطبيقات الموجّهة، مثل إتاحتها فقط عندما يكون Element == Int. ولن تظهر هذه الواجهات لأنواع العناصر الأخرى.
extension Collection where Element == Int {
var sum: Int { reduce(0, +) }
func average() -> Double {
isEmpty ? 0 : Double(sum) / Double(count)
}
}
print([1,2,3].sum) // 6
print([1,2,3].average()) // 2.0واجهات برمجة التطبيقات القائمة على القدرات
قيّدوا واجهات برمجة التطبيقات حسب القدرة، باستخدام بروتوكولات مثل Numeric وHashable لإنشاء أدوات مساعدة قوية وقابلة لإعادة الاستخدام.
extension Collection where Element: Numeric {
var total: Element { reduce(0, +) }
}
extension Sequence where Element: Hashable {
var uniques: [Element] {
var seen = Set<Element>()
return filter { seen.insert($0).inserted }
}
}
print([1,2,2,3].uniques) // [1,2,3]
print([1,2,3].total) // 6ملاحظات التصميم
نصائح:
- فضّل القيود الدنيا لإعادة الاستخدام على نطاق أوسع.
- تجنّب الامتدادات المتداخلة التي تعرّف العضو نفسه؛ فقد يربك ذلك حل التحميل الزائد.
- وثّق الافتراضات (الترتيب، والتفرّد، ونطاقات القيم العددية).
غرض الامتداد المقيّد
تحقّق سريعًا: ماذا تتيح لك الامتدادات المقيّدة؟
خلاصة
خلاصة: استخدم where في امتدادات الأنواع والبروتوكولات لاستهداف واجهات API بدقة—بحسب القدرة (: Comparable) أو النوع المطابق تمامًا (== Int)—مع الحفاظ على أمان الكود وسهولة اكتشافه.
الأسئلة الشائعة
هل درس «عبارات where على الامتدادات» مجاني؟
نعم — نص درس «عبارات where على الامتدادات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 3 دروس في المجموع.
ماذا ستتعلم في «عبارات where على الامتدادات»؟
استخدم where على امتدادات الأنواع و Protocols لإضافة واجهات API فقط عند استيفاء القيود، مثل Array where Element: Equatable و Collection where Element == Int . تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟
لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 3.
كم من الوقت يستغرق درس «عبارات where على الامتدادات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟
نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الامتثال المشروط
- القيود التكرارية والأنواع العامة عالية الرتبة
- عبارات where على الامتدادات