الأنواع الأساسية المرتبطة والأخطاء المعيّنة
قيّدوا الأنواع الوجودية للبروتوكولات وتعرّفوا إلى نشر الأخطاء المعيّنة في Swift 6.
الأنواع الأساسية المرتبطة والأخطاء المعيّنة درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 4 دروس في المجموع.
الأنواع المرتبطة الأساسية
يتيح Swift 5.7 تحديد الأنواع المرتبطة الأساسية في البروتوكولات، مما يتيح استخدام أنواع وجودية مقيّدة.
protocol Container<Element> {
associatedtype Element
var items: [Element] { get }
}
struct Bag<T>: Container { var items: [T] = [] }الأنواع الوجودية المقيّدة
باستخدام الأنواع المرتبطة الأساسية، يمكنكم كتابة any Container لتقييد النوع الوجودي.
func printItems(_ c: any Container<Int>) {
c.items.forEach { print($0) }
}
printItems(Bag(items: [1,2,3]))الأنواع الوجودية المقيّدة للمجموعات
تدعم بروتوكولات المكتبة القياسية، مثل Collection، الآن الأنواع المرتبطة الأساسية.
func first(_ c: any Collection<String>) -> String? {
c.first
}
print(first(["a","b","c"]) ?? "none")مقدمة إلى الرمي المعيّن النوع
يقدّم Swift 6 الرمي المعيّن النوع، بحيث يمكنكم تحديد نوع الخطأ الدقيق الذي قد ترميه الدالة.
enum NetworkError: Error { case timeout, notFound }
func fetch() throws(NetworkError) -> Data {
throw NetworkError.timeout
}معالجة شاملة باستخدام الرمي المعيّن النوع
بما أن نوع الخطأ معروف، يستطيع المترجم التحقق من معالجة جميع الحالات بصورة شاملة.
do {
let _ = try fetch()
} catch .timeout {
print("Timed out")
} catch .notFound {
print("Not found")
}الرمي المعيّن النوع في البروتوكولات
يمكن لمتطلبات البروتوكول تحديد عملية رمي معيّنة النوع، مما يتيح للأنواع المطابقة توفير أنواع أخطاء دقيقة.
protocol Fetchable {
associatedtype Failure: Error
func fetch() throws(Failure) -> Data
}إعادة الرمي باستخدام الرمي المعيّن النوع
يعمل rethrows مع الرمي المعيّن النوع: إذ تنقل الدالة الخارجية نوع الخطأ الداخلي.
func map<T, E: Error>(_ array: [T], transform: (T) throws(E) -> T) throws(E) -> [T] {
try array.map { try transform($0) }
}الجمع بين الأنواع المرتبطة الأساسية والرمي المعيّن النوع
يمكنكم استخدام الميزتين معًا لإنشاء واجهات برمجية دقيقة وآمنة من ناحية الأنواع.
protocol Repository<Model> {
associatedtype Model
associatedtype Failure: Error
func fetchAll() throws(Failure) -> [Model]
}الرمي المعيّن النوع غير المقيّد
يُعدّ throws(any Error) مكافئًا للرمي غير المعيّن النوع، ويوفّر لكم مخرجًا عند الحاجة.
func riskyOp() throws(any Error) {
// can throw any error
}الترحيل من الرمي غير المعيّن النوع إلى الرمي المعيّن النوع
مسار الترحيل: أضيفوا نوع الخطأ الملموس إلى الدوال التي ترمي الأخطاء، خطوةً فخطوة.
// Before:
func load() throws -> Data { ... }
// After:
func load() throws(NetworkError) -> Data { ... }الرمي المعيّن النوع وasync
يتوافق الرمي المعيّن النوع طبيعيًا مع async؛ فالصياغة async throws(E) صالحة.
func fetchAsync() async throws(NetworkError) -> Data {
throw NetworkError.notFound
}اختبار سريع
ما الذي يتيحه تحديد نوع مرتبط أساسي في بروتوكول؟
مراجعة الدرس
تتيح الأنواع المرتبطة الأساسية (في Swift 5.7) أنواعًا وجودية مقيّدة مثل any Collection. ويتيح الرمي المعيّن النوع (في Swift 6) تحديد أنواع الأخطاء بدقة لكتل catch الشاملة. وتحسّن الميزتان أمان الأنواع والتعبير عن الواجهات البرمجية.
تعلم Swift مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 122
- الدروس
- 409
الأسئلة الشائعة
هل درس «الأنواع الأساسية المرتبطة والأخطاء المعيّنة» مجاني؟
نعم — نص درس «الأنواع الأساسية المرتبطة والأخطاء المعيّنة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 4 دروس في المجموع.
ماذا ستتعلم في «الأنواع الأساسية المرتبطة والأخطاء المعيّنة»؟
قيّدوا الأنواع الوجودية للبروتوكولات وتعرّفوا إلى نشر الأخطاء المعيّنة في Swift 6. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟
لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «الأنواع الأساسية المرتبطة والأخطاء المعيّنة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟
نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- القيود العامة وعبارات where
- الأنواع الضمنية باستخدام الكلمة المفتاحية some
- الأنواع الوجودية باستخدام any ومحو النوع
- الأنواع الأساسية المرتبطة والأخطاء المعيّنة