0Pricing
Swift Academy · درس

الخصائص المحسوبة في البنى

اشتقّوا القيم باستخدام الخصائص المحسوبة للقراءة فقط أو للقراءة والكتابة.

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

مرحبًا

لا تخزّن الخصائص المحسوبة قيمة، بل تحسب قيمة وتعيدها عند الطلب. وهي تبدو كخصائص للجهات المستدعية، لكنها تشغّل تعليمات برمجية داخليًا.

خاصية محسوبة للقراءة فقط

```swift struct Circle { var radius: Double var area: Double { .pi * radius * radius } var circumference: Double { 2 * .pi * radius } } var c = Circle(radius: 5) print(c.area) // 78.53... ```

get و set

```swift struct Temperature { var celsius: Double var fahrenheit: Double { get { celsius * 9/5 + 32 } set { celsius = (newValue - 32) * 5/9 } } } var t = Temperature(celsius: 0) print(t.fahrenheit) // 32 t.fahrenheit = 212 print(t.celsius) // 100 ```

الصيغة المختصرة لـ get — حذف الكلمة المفتاحية get

بالنسبة إلى الخصائص للقراءة فقط، يكون الغلاف `get { }` اختياريًا: ```swift var area: Double { .pi * radius * radius } // same as { get { ... } } ```

newValue في set

داخل `set`، تُسمّى القيمة الواردة `newValue` تلقائيًا: ```swift set { celsius = (newValue - 32) * 5/9 } ``` أو يمكنك تسميتها صراحةً: ```swift set(degF) { celsius = (degF - 32) * 5/9 } ```

الخصائص المحسوبة غير مخزنة

لا تملك الخصائص المحسوبة مساحة تخزين داعمة، إذ يُشغّل كل وصول إليها التعليمات البرمجية: ```swift struct Stats { var scores: [Int] var average: Double { guard !scores.isEmpty else { return 0 } return Double(scores.reduce(0,+)) / Double(scores.count) } } ```

الخصائص المحسوبة الساكنة

```swift struct Config { static var appName: String { Bundle.main.infoDictionary?["CFBundleName"] as? String ?? "App" } } print(Config.appName) ```

الخصائص المحسوبة في البروتوكولات

```swift protocol Greetable { var greeting: String { get } } struct Person: Greetable { var name: String var greeting: String { "Hello, \(name)!" } } ``` يمكن للبروتوكولات طلب خصائص محسوبة، فما عليك سوى تحديد `{ get }` أو `{ get set }`.

أداء الخصائص المحسوبة مقابل المخزنة

• المحسوبة: يُعاد حسابها عند كل وصول، لذا تجنّب الحسابات المكلفة في الخصائص التي يُقرأ منها كثيرًا • استخدم `lazy var` للقيم المحسوبة المكلفة التي تحتاج إلى حسابها مرة واحدة: ```swift lazy var thumbnail: UIImage = generateThumbnail() ```

جسم التعبير مقابل الكتلة

تعيد الخصائص المحسوبة ذات التعبير الواحد في Swift 5.9 والإصدارات الأحدث القيمة ضمنيًا: ```swift var fullName: String { "\(first) \(last)" } // equivalent to: var fullName: String { return "\(first) \(last)" } ```

تحقق سريع

ما الاسم الافتراضي للقيمة الواردة داخل كتلة `set` الخاصة بالخاصية؟

مراجعة

أهم النقاط: • تشغّل الخصائص المحسوبة التعليمات البرمجية عند كل وصول، ولا تملك تخزينًا داعمًا • للقراءة فقط: احذف `get`/`set` أو استخدم الصيغة المختصرة `{ return ... }` • للقراءة والكتابة: وفّر كتلتي `get` و`set(newValue)` • تناسب القيم المشتقة مثل `area` و`fullName` وتحويلات الوحدات • استخدم `lazy` للقيم المكلفة التي تُحسب مرة واحدة التالي: الدوال المعدِّلة.

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

هل درس «الخصائص المحسوبة في البنى» مجاني؟

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

ماذا ستتعلم في «الخصائص المحسوبة في البنى»؟

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

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

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

كم من الوقت يستغرق درس «الخصائص المحسوبة في البنى»؟

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

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

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

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

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