ما هو البروتوكول؟
عقد يحدّد متطلّبات (طرقًا وخصائص) على الأنواع تبنّيه (يشبه interface):
protocol Describable {
var name: String { get }
func describe() -> String
}
struct Product: Describable {
var name: String
func describe() -> String {
return "المنتج: \(name)"
}
}
تبنّي عدّة بروتوكولات
protocol Identifiable { var id: Int { get } }
struct User: Describable, Identifiable {
var name: String
var id: Int
func describe() -> String { "مستخدم \(name)" }
}
التنفيذ الافتراضي عبر extension
extension Describable {
func describe() -> String {
return "كائن: \(name)" // افتراضي للجميع
}
}
البروتوكول كنوع
let items: [Describable] = [Product(name: "كتاب")]
for item in items { print(item.describe()) }
💡 "البرمجة الموجّهة بالبروتوكولات" فلسفة أساسية في Swift و SwiftUI.
🎯 التالي: دوال التمديد.