تخطَّ إلى المحتوى

protocol

عقد السلوك protocol

protocol يحدّد متطلّبات (دوال وخصائص) يجب أن يوفّرها أي نوع يتبنّاه — أساس البرمجة الموجّهة بالبروتوكولات في Swift.

أي struct أو class أو enum يمكنه تبنّي بروتوكول واحد أو أكثر، ويلتزم بتوفير كل ما يطلبه من دوال وخصائص. البروتوكولات لا تحتوي تنفيذًا افتراضيًا بذاتها، لكن يمكن إضافته عبر extension على البروتوكول نفسه ليستفيد منه كل من يتبنّاه.

الصياغة

protocol Name {
    var property: Type { get set }
    func method() -> ReturnType
}

struct Impl: Name { /* التزام بالمتطلبات */ }

📄 مثال

protocol Describable {
    var name: String { get }
    func describe() -> String
}

struct Product: Describable {
    var name: String
    func describe() -> String { "المنتج: \(name)" }
}

أهم النقاط

العنصرالوظيفة
{ get }خاصية للقراءة فقط مطلوبة من المتبنّي
{ get set }خاصية للقراءة والكتابة مطلوبة من المتبنّي
extension Protocolيضيف تنفيذًا افتراضيًا لكل من يتبنّى البروتوكول

💡 نصائح عملية

  • استخدم [SomeProtocol] كنوع مصفوفة لتخزين أنواع مختلفة تشترك بنفس السلوك
  • التنفيذ الافتراضي عبر extension يقلّل التكرار عندما يتشابه السلوك بين عدّة أنواع

⚠️ أخطاء شائعة

  • نسيان تنفيذ أحد متطلّبات البروتوكول — خطأ ترجمة فورًا وواضح
  • الخلط بين { get } و { get set } فيتسبّب برفض struct بخاصية let من التبنّي

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار SWIFT الكامل بالعربي.