Swift Academy · درس

المهيئات بحسب الأعضاء والمهيئات المخصّصة

تعرّفوا إلى المهيئات بحسب الأعضاء التي تُنشأ تلقائيًا، وتعلّموا كتابة المهيئات المخصّصة.

الدرس 1 من 412 خطوة

المهيئات بحسب الأعضاء والمهيئات المخصّصة درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 4 دروس في المجموع.

مرحبًا

تحصل بنى Swift تلقائيًا على *memberwise initializer* مجاني يقبل جميع الخصائص المخزّنة. ويمكنكم تخصيص هذا المهيّئ أو توسيعه بمنطق مهيّئ خاص بكم.

المهيّئ memberwise المُنشأ تلقائيًا

```swift struct Point { var x: Double var y: Double } let p = Point(x: 3.0, y: 4.0) // auto-generated init ``` لا حاجة إلى كتابة `init` بأنفسكم؛ إذ يوفّره المترجم.

إضافة مُهيئ مخصص

```swift struct Circle { var radius: Double var area: Double init(radius: Double) { self.radius = radius self.area = .pi * radius * radius } } let c = Circle(radius: 5.0) ```

الحفاظ على مُهيئ الأعضاء

يؤدي تعريف مُهيئ مخصص إلى تعطيل مُهيئ الأعضاء الذي يُنشئه المترجم تلقائيًا. وللاحتفاظ بكليهما، ضع المُهيئ المخصص داخل extension: ```swift struct Rect { var width: Double; var height: Double } extension Rect { init(square side: Double) { self.init(width: side, height: side) } } // Both Rect(width:height:) and Rect(square:) available ```

القيم الافتراضية للخصائص

```swift struct Config { var debug = false var maxRetries = 3 var timeout: TimeInterval = 30 } let c1 = Config() // all defaults let c2 = Config(debug: true) // memberwise with overrides ```

تفويض التهيئة باستخدام self.init

```swift struct Temperature { var celsius: Double init(celsius: Double) { self.celsius = celsius } init(fahrenheit: Double) { self.init(celsius: (fahrenheit - 32) / 1.8) } init(kelvin: Double) { self.init(celsius: kelvin - 273.15) } } ```

المهيئات القابلة للفشل

```swift struct Percentage { let value: Double init?(_ value: Double) { guard (0...100).contains(value) else { return nil } self.value = value } } let p = Percentage(105) // nil ```

التهيئة مع التحقق

```swift struct Username { let value: String init?(_ raw: String) { let trimmed = raw.trimmingCharacters(in: .whitespaces) guard trimmed.count >= 3 else { return nil } self.value = trimmed } } ```

مُهيئ البنية مقابل مُهيئ الصنف

الاختلافات الأساسية عن مهيئات الأصناف: • يمكن للبنى استخدام التفويض عبر `self.init()` • لا ترث البنى المهيئات، لذلك لا يوجد `super.init()` • يجب تهيئة جميع الخصائص المخزنة قبل الاستخدام • لا توجد الكلمات المفتاحية `required` أو `designated` / `convenience`

لمحة عن init(from decoder:)

تحصل البنى المتوافقة مع `Decodable` على مُهيئ تلقائي: ```swift struct User: Decodable { let name: String let age: Int } // Auto-synthesised init(from:) for JSON decoding let user = try JSONDecoder().decode(User.self, from: json) ```

تحقق سريع

أين ينبغي وضع مُهيئ مخصص للحفاظ على مُهيئ الأعضاء الذي يُنشئه المترجم تلقائيًا؟

مراجعة

أهم النقاط: • تحصل البنى على مُهيئ مجاني حسب الأعضاء من المترجم • تؤدي المهيئات المخصصة داخل جسم البنية إلى تعطيل مُهيئ الأعضاء • ضع المهيئات المخصصة داخل extensions للاحتفاظ بكليهما • استخدم `self.init()` للتفويض بين المهيئات • تعيد المهيئات القابلة للفشل القيمة `nil` عند إدخال قيمة غير صالحة التالي: الخصائص المخزنة ومراقبات الخصائص.
البدء مجانًا

تعلم Swift مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
122
الدروس
409

الأسئلة الشائعة

هل درس «المهيئات بحسب الأعضاء والمهيئات المخصّصة» مجاني؟

نعم — نص درس «المهيئات بحسب الأعضاء والمهيئات المخصّصة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 4 دروس في المجموع.

ماذا ستتعلم في «المهيئات بحسب الأعضاء والمهيئات المخصّصة»؟

تعرّفوا إلى المهيئات بحسب الأعضاء التي تُنشأ تلقائيًا، وتعلّموا كتابة المهيئات المخصّصة. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟

لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «المهيئات بحسب الأعضاء والمهيئات المخصّصة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟

نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. المهيئات بحسب الأعضاء والمهيئات المخصّصة
  2. الخصائص المخزّنة ومراقبو الخصائص
  3. الخصائص المحسوبة في البنى
  4. الأساليب المعدِّلة ودلالات النسخ عند الكتابة
← العودة إلى Swift Academy