0Pricing
Dart Academy · درس

كتابة أول Extension لك

أضف طرقًا جديدة إلى نوع مضمّن

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

الدوال التي لا يمكنكم إضافتها

هل تمنيت يومًا أن يوفّر int طريقة مفيدة لا يوفّرها فعلًا؟ لا يمكنك تعديل الفئة المضمّنة، لكن تمنحك Dart طريقة أخرى للوصول إلى ذلك.

تعرّف إلى الامتدادات

يتيح لك extension إضافة طرق جديدة إلى نوع موجود من دون إنشاء فئة فرعية أو تعديل مصدره. 🎁

extension on String {
  // new methods go here
}

البنية الأساسية

تكتب extension Name on Type، ثم تضيف الطرق بين القوسين المعقوفين. الاسم من اختيارك، أما النوع فهو النوع الذي توسّعه.

extension NumberParsing on String {
  int doubled() => int.parse(this) * 2;
}

يشير this إلى الكائن المستقبل

داخل الامتداد، تشير this إلى القيمة التي استدعيت الطريقة عليها، تمامًا كما يحدث داخل طريقة عادية في فئة.

extension on int {
  int squared() => this * this;
}

استدعها كطريقة حقيقية

بعد تعريف طريقتك، ستبدو native تمامًا. تستدعيها باستخدام النقطة، مثل الطرق المضمّنة مع النوع.

print(5.squared()); // 25

أضف أداة getter بدلًا من طريقة

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

extension on int {
  bool get isEven2 => this % 2 == 0;
}
print(4.isEven2);

الامتدادات ثابتة

يحدث تحديد الطريقة في compile time استنادًا إلى النوع الساكن. ولا يُجرى أي تغيير وقت التشغيل على الفئة الأصلية.

التسمية اختيارية

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

extension on double {
  String money() => "$" + toStringAsFixed(2);
}

اجعل لكل امتداد فكرة واحدة

اجمع الأدوات المساعدة المرتبطة تحت name واضح ومحدد. فالامتدادات الصغيرة ذات الأسماء الجيدة أسهل قراءة من امتداد واحد ضخم يجمع كل شيء.

extension StringCasing on String {
  String shout() => toUpperCase() + "!";
}

لا يمكنك إضافة حقول

تضيف الامتدادات طرقًا وgetters، لكنها لا تضيف حقول مثيلات جديدة. فلا يوجد مكان في الكائن الأصلي لتخزينها.

لماذا تُعد هذه الميزة قوية

تمنحك الامتدادات أدوات مساعدة واضحة وسهلة الاكتشاف من دون فئات تغليف. وتكتسب الأنواع التي تستخدمها يوميًا vocabulary التي يحتاج إليها تطبيقك بالضبط.

تحقق سريع

لنتحقق من الصياغة الأساسية للامتداد.

مراجعة: امتدادك الأول

تعلّمت أن extension on Type يضيف طرقًا وgetters إلى الأنواع الموجودة، ويستخدم this للكائن المستقبل، ويُحدَّد بشكل ساكن. 🚀

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

هل درس «كتابة أول Extension لك» مجاني؟

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

ماذا ستتعلم في «كتابة أول Extension لك»؟

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

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

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

كم من الوقت يستغرق درس «كتابة أول Extension لك»؟

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

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

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

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

  1. كتابة أول Extension لك
  2. Extensions على Generics
  3. أعضاء Extension الثابتة والتعارضات
  4. Extension Types للتغليف من دون تكلفة
← العودة إلى Dart Academy