البنّاءات الافتراضية والمعلَّمة بالمعاملات
هيّئ الحقول عند إنشاء الكائنات
البنّاءات الافتراضية والمعلَّمة بالمعاملات درس مجاني في Dart Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Dart Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Dart Academy 4 دروس في المجموع.
ما الذي يفعله Constructor
إن constructor هو الدالة الخاصة التي تنشئ كائنًا جديدًا وتضبط حالته الابتدائية عند كتابة اسم الصنف. 🏗️
Constructor الافتراضي
إذا لم تكتب أي constructor، تمنحك Dart default constructor مجانيًا لا يتلقى أي وسيطات وينشئ كائنًا أساسيًا.
class Dog {}
var d = Dog(); // uses the default constructorConstructor بمعاملات
أضف معاملات ليتمكن المستدعي من تقديم القيم مسبقًا. ويسند parameterized constructor هذه القيم إلى حقول الكائن.
class Dog {
String name;
Dog(this.name);
}الكلمة المفتاحية this في المعاملات
تعني الصيغة المختصرة this.name في المعامل أخذ الوسيطة وتخزينها مباشرةً في الحقل الذي يحمل الاسم نفسه، مما يوفر عليك سطرًا.
class Dog {
String name;
Dog(this.name);
}من دون اختصار this
يمكنك إجراء الإسناد يدويًا داخل جسم الدالة بدلًا من ذلك. وهنا تفصل this بين الحقل والمعامل عندما يتطابق اسماهما.
class Dog {
String name;
Dog(String name) {
this.name = name;
}
}إنشاء كائن
استدعِ الصنف مثل دالة ومرّر الوسيطات بالترتيب. تشغّل Dart الـ constructor وتمنحك instance جاهزًا.
var d = Dog("Rex");
print(d.name); // Rexعدة معاملات بالترتيب
اكتب المعاملات من اليسار إلى اليمين؛ إذ يجب على المستدعين تمريرها بالترتيب positional نفسه، وهو مناسب لحقلين أو ثلاثة حقول واضحة.
class Point {
int x, y;
Point(this.x, this.y);
}إضافة منطق إلى الجسم
يمكن لجسم constructor تنفيذ إعداد إضافي بعد ضبط الحقول، مثل التحقق أو التسجيل. اجعل هذا body صغيرًا ومركّزًا.
class Box {
int size;
Box(this.size) {
print("Box made: $size");
}
}لا تملك Constructors نوع إرجاع
لا تكتب نوع إرجاع ولا تُرجع قيمة. يعيد constructor الكائن الجديد دائمًا، لذا يكفي name وحده.
class Cat {
Cat(); // no void, no return
}Constructor واحد غير مسمى لكل صنف
لا يمكن للصنف أن يملك أكثر من constructor واحد unnamed. هل تحتاج إلى طرق إضافية للإنشاء؟ ستستخدم named constructors بعد قليل.
تختفي القيم الافتراضية بمجرد إضافة Constructor
بمجرد تعريف أي constructor، تتوقف Dart عن منحك constructor المجاني الذي لا يتلقى معاملات. أضِفه بنفسك إذا كنت لا تزال تريد إنشاءً empty.
class User {
String name;
User(this.name);
User.empty() : name = "";
}تحقق سريع
تحقق سريع من الفرق بين constructors الافتراضية وذات المعاملات.
مراجعة: إنشاء الكائنات
تعرّفت إلى constructors: الافتراضي المجاني، وذات المعاملات، واختصار this، وكيف تؤدي كتابة أحدها إلى إزالة الافتراضي. التالي هو named constructors. ✨
الأسئلة الشائعة
هل درس «البنّاءات الافتراضية والمعلَّمة بالمعاملات» مجاني؟
نعم — نص درس «البنّاءات الافتراضية والمعلَّمة بالمعاملات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Dart Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Dart Academy 4 دروس في المجموع.
ماذا ستتعلم في «البنّاءات الافتراضية والمعلَّمة بالمعاملات»؟
هيّئ الحقول عند إنشاء الكائنات تتمرن على Dart Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Dart Academy؟
لا تُشترط خبرة سابقة. Dart Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «البنّاءات الافتراضية والمعلَّمة بالمعاملات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Dart Academy هذا؟
نعم. كل درس في Dart Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- البنّاءات الافتراضية والمعلَّمة بالمعاملات
- بنّاءات مسماة لوضوح القصد
- قوائم التهيئة وإعادة التوجيه
- بنّاءات factory وconst