0Pricing
Dart Academy · درس

Getters وSetters

اعرض خصائص محسوبة ومحمية

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

ما يتجاوز الحقول العادية

قد ترغب أحيانًا في خاصية تُحسب قيمتها أو تخضع للحماية. توفر Dart دوال الحصول وsetters للتحكم في كيفية قراءة القيمة وكتابتها.

ما هي دالة الحصول؟

تبدو دالة الحصول كحقل من الخارج، لكنها تشغّل شيفرة لإنتاج قيمتها. استخدم الكلمة المفتاحية get لتعريفها.

int get area => width * height;

دوال الحصول تحسب القيم

تُعد دالة الحصول مثالية للقيم المشتقة من حقول أخرى. اقرأها باستخدام تدوين النقطة العادي، من دون الحاجة إلى أقواس.

class Box {
  int w = 2, h = 3;
  int get area => w * h;
}

استدعاء دالة الحصول

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

var b = Box();
print(b.area); // 6

ما هو setter؟

يشغّل setter شيفرةً عند إسناد قيمة. عرّفه باستخدام الكلمة المفتاحية set ومعامل واحد لاستقبال المدخل.

set width(int value) {
  _w = value;
}

تتحقق setters من المدخلات

يمكن لـsetter التحقق من القيمة قبل تخزينها. ارفض البيانات غير الصحيحة، أو قيّد النطاقات، أو سجّل التغييرات داخل عملية الإسناد نفسها.

set age(int v) {
  if (v >= 0) _age = v;
}

الحقول الخاصة الداعمة

تكون الأسماء التي تبدأ بشرطة سفلية خاصة بالمكتبة. وغالبًا ما يحمي setter حقلًا داعمًا خاصًا مثل _age.

int _age = 0;
int get age => _age;

استدعاء setter

أسند قيمة إلى setter كما تسندها إلى حقل باستخدام علامة المساواة. وتوجّه Dart ذلك الإسناد عبر شيفرة الحماية التي كتبتها.

var p = Person();
p.age = 25;

دالة الحصول من دون setter

عرّف دالة الحصول وحدها لإنشاء خاصية للقراءة فقط. ويمكن للشيفرة الخارجية قراءتها، لكنها لا تستطيع إسناد قيمة إليها مطلقًا.

String get fullName => "$first $last";

لماذا نستخدم دوال الحصول وsetters؟

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

مثال على خاصية محسوبة

تتألق getter عند تنسيق البيانات. ادمج الحقول في سلسلة نصية واضحة يقرأها المستدعي مثل أي خاصية عادية.

String get label => "$name: $score pts";

تحقق سريع

تريد خاصية يمكن للآخرين قراءتها، لكن لا يمكنهم إسناد قيمة إليها. ماذا تعرّف؟

مراجعة: Getters وSetters

تعلمت أن getters تحسب القيم وتتيح الوصول إليها، وأن setters تتحكم في عمليات الإسناد، وتعملان معًا على إخفاء التفاصيل الداخلية بطريقة منظمة. 🎉

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

هل درس «Getters وSetters» مجاني؟

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

ماذا ستتعلم في «Getters وSetters»؟

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

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

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

كم من الوقت يستغرق درس «Getters وSetters»؟

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

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

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

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

  1. تعريف فئة باستخدام الحقول
  2. طرق النسخة وthis
  3. Getters وSetters
  4. الأعضاء الثابتة وثوابت الفئة
← العودة إلى Dart Academy