Dart Academy · درس

Extension Types للتغليف من دون تكلفة

غلّف نوعًا من دون عبء وقت التشغيل

الدرس 4 من 413 خطوة

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

أداة مختلفة

إن extension type ميزة أحدث؛ فهي تغلّف نوعًا موجودًا لتمنحه واجهة جديدة، من دون تكلفة وقت التشغيل.

غلّف من دون إنشاء كائن تغليف

على خلاف فئة التغليف الحقيقية، لا يضيف نوع الامتداد أي كائن وقت التشغيل. فهو في وقت التشغيل مجرد القيمة الأساسية نفسها.

extension type UserId(int id) {}

نوع التمثيل

القيمة بين القوسين هي نوع representation. في هذا المثال، UserId هو في الحقيقة مجرد int يحمل اسمًا أكثر أمانًا.

extension type Meters(double value) {}

أنشئه بسهولة

تنشئ نوع الامتداد كما تستدعي constructor، وتمرّر القيمة الأساسية إليه مباشرة.

var id = UserId(42);
var d = Meters(3.5);

أضف طرقًا آمنة

يمكنك داخل الجسم إضافة methods وgetters تعمل على القيمة المغلّفة، فتمنحها معنى حقيقيًا.

extension type Meters(double value) {
  Meters plus(Meters o) => Meters(value + o.value);
}

أقوى من typedef

إن typedef مجرد اسم مستعار، أما نوع الامتداد فهو نوع distinct. لذلك لا يمكنك خلط UserId مع int عادي عن طريق الخطأ.

int raw = 42;
// UserId u = raw; // error: not interchangeable

أخفِ الواجهة البرمجية الأساسية

يخفي نوع الامتداد افتراضيًا أعضاء النوع المغلّف، فلا يمكن استدعاء سوى الطرق التي تتيحها أنت.

var m = Meters(2.0);
// m.toStringAsFixed(2); // not available unless exposed

أو طبّق الواجهة لإظهارها

أضف implements لتمرير أعضاء النوع الأساسي، مما يتيح للمستدعين استخدام واجهتك البرمجية ونوع الأساس معًا.

extension type Score(int value) implements int {}
print(Score(9) + 1); // 10

من دون تكلفة وقت التشغيل

لعدم إنشاء كائن حقيقي، لا تكلّف أنواع الامتداد nothing وقت التشغيل. وتحصل على أمان الأنواع مجانًا.

ممتازة لمعرّفات المجال

تتألق هذه الأنواع مع identifiers المعرّفة نوعيًا مثل UserId أو Email، إذ تمنعك من تمرير int خاطئ إلى الموضع الخطأ.

void load(UserId id) {}
load(UserId(7)); // load(7) would not compile

الامتدادات مقابل أنواع الامتداد

يضيف الامتداد طرقًا إلى نوع مشترك بين الجميع، أما نوع الامتداد فينشئ نوعًا جديدًا وdistinct حول قيمة.

تحقق سريع

التحقق الأخير: ما الذي يميز أنواع الامتداد؟

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

تعرّفت إلى extension types: أغلفة مميزة ومنعدمة التكلفة فوق نوع تمثيل، وهي مثالية للمعرّفات والوحدات الآمنة من دون تكلفة وقت التشغيل. 🏁

البدء مجانًا

تعلم Dart مع معلم ذكاء اصطناعي — مجانًا

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

الدورات
30
الدروس
120

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

هل درس «Extension Types للتغليف من دون تكلفة» مجاني؟

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

ماذا ستتعلم في «Extension Types للتغليف من دون تكلفة»؟

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

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

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

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

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

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

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

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

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