الخصائص المخزنة مقابل المحسوبة والمراقبات
عرّف الخصائص المخزنة والمحسوبة، وأنشئ خصائص محسوبة للقراءة فقط أو باستخدام get/set، واستجب للتغييرات باستخدام مراقبات willSet/didSet.
الخصائص المخزنة مقابل المحسوبة والمراقبات درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 2 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 3 دروس في المجموع.
نظرة عامة
يقارن هذا الدرس بين الخصائص المخزنة والمحسوبة، ويوضح كيفية استخدام مراقبي willSet/didSet للاستجابة للتغييرات.
المخزنة مقابل المحسوبة
تحتفظ الخصائص المخزنة بالبيانات، بينما تحسب الخصائص المحسوبة قيمة عند الوصول إليها.
struct Rectangle {
// stored properties (hold data)
var width: Double
var height: Double
// computed property (derived on access)
var area: Double {
return width * height // read-only computed
}
}
let r = Rectangle(width: 3, height: 4)
print("area =", r.area) // 12الخاصية المحسوبة مع get/set
أضف get/set لإنشاء خاصية محسوبة قابلة للقراءة والكتابة وتحافظ على اتساق الثوابت.
struct Circle {
var radius: Double // stored
var diameter: Double { // computed read-write
get { radius * 2 }
set { radius = newValue / 2 }
}
}
var c = Circle(radius: 5)
print(c.diameter) // 10
c.diameter = 14
print(c.radius) // 7تطبيق المراقبين
يعمل المراقبون قبل تغييرات الخاصية المخزنة وبعدها. استخدم newValue/oldValue لمعرفة السياق.
struct Counter {
var value: Int = 0 {
willSet { print("will set to", newValue) }
didSet { print("did set from", oldValue) }
}
}
var cnt = Counter()
cnt.value = 5
cnt.value = 9المراقبون مقابل المحسوبة
ملاحظات:
- ينطبق المراقبون على الخصائص المخزنة، بما فيها الخصائص التي تعيّن قيمها في الامتدادات.
- لا تدعم الخصائص المحسوبة المراقبين—ضع المنطق في set بدلًا من ذلك.
- لا يُستدعى المراقبون أثناء التهيئة قبل أن تصبح مساحة التخزين جاهزة.
نمط عملي
اجمع بين المراقبين من أجل تطبيع الإدخال، وخاصية محسوبة من أجل اشتقاق بيانات العرض.
struct Score {
var raw: Int = 0 {
didSet {
if raw < 0 { raw = 0 }
if raw > 100 { raw = 100 }
}
}
var label: String {
// computed: derive a label from current raw
if raw >= 90 { return "A" }
if raw >= 80 { return "B" }
if raw >= 70 { return "C" }
return "D"
}
}
var s = Score()
s.raw = 120
print(s.raw, s.label) // 100 A
s.raw = -5
print(s.raw, s.label) // 0 Dقاعدة المراقبين
تحقق سريع: ما الذي يعمل قبل تغيّر خاصية مخزنة وبعده؟
مراجعة
مراجعة: استخدم الخصائص المخزنة للبيانات، والخصائص المحسوبة للقيم المشتقة باستخدام get/set، وwillSet/didSet للاستجابة للتغييرات في الخصائص المخزنة.
الأسئلة الشائعة
هل درس «الخصائص المخزنة مقابل المحسوبة والمراقبات» مجاني؟
نعم — نص درس «الخصائص المخزنة مقابل المحسوبة والمراقبات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 3 دروس في المجموع.
ماذا ستتعلم في «الخصائص المخزنة مقابل المحسوبة والمراقبات»؟
عرّف الخصائص المخزنة والمحسوبة، وأنشئ خصائص محسوبة للقراءة فقط أو باستخدام get/set، واستجب للتغييرات باستخدام مراقبات willSet/didSet. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟
لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 3.
كم من الوقت يستغرق درس «الخصائص المخزنة مقابل المحسوبة والمراقبات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟
نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- Structs مقابل Classes والخصائص وعمليات التهيئة
- الخصائص المخزنة مقابل المحسوبة والمراقبات
- عمليات التهيئة وdeinit (الفئات)