0Pricing
Dart Academy · درس

Enums محسّنة بالحقول والطرق

أرفق البيانات والسلوك بكل قيمة

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

يمكن لـ Enums حمل البيانات

يتيح Dart الحديث لكل عضو في enum الاحتفاظ ببياناته الخاصة. وتسمى هذه enhanced enums، إذ تحول التسميات البسيطة إلى قيم غنية.

إضافة حقل

عرّف حقلًا من نوع final في enum، ثم مرّر قيمة لكل عضو. وسيحمل كل عضو الآن تلك البيانات الإضافية.

enum Planet {
  earth(9.8), mars(3.7);
  final double gravity;
}

يلزم وجود مُنشئ const

تحتاج enhanced enums إلى مُنشئ const لتعيين حقولها. ويُشغّل هذا المُنشئ مرة واحدة لكل عضو عند إنشاء القيم.

const Planet(this.gravity);

تمرر الأعضاء معاملات المُنشئ

القيم الموجودة بين القوسين هي معاملات المُنشئ. وتعني earth(9.8) أن earth تُنشأ مع ضبط الجاذبية على 9.8.

earth(9.8), mars(3.7);

قراءة حقل عضو

يمكنك الوصول إلى البيانات من خلال العضو، تمامًا كما تصل إلى أي خاصية. ويعيد كل عضو القيمة المخزنة الخاصة به.

print(Planet.earth.gravity); // 9.8

حقول متعددة

يمكن لـ enhanced enum الاحتفاظ بعدة حقول في الوقت نفسه. اذكرها في المُنشئ ووفّر قيمة كل حقل لكل عضو.

enum Coin { penny(1, "1c"), dime(10, "10c"); }

إضافة طريقة

يمكن لـ enhanced enums تعريف methods أيضًا. ويمكن للطريقة استخدام حقول العضو، مما يمنح كل قيمة سلوكًا حقيقيًا.

double weightOf(double mass) => mass * gravity;

استدعاء طريقة enum

استدعِ الطريقة على أي عضو كما تفعل مع كائن عادي. وستعمل باستخدام قيم حقول ذلك العضو.

print(Planet.mars.weightOf(70)); // 259.0

إضافة Getter

يعمل getter محسوب أيضًا، إذ يعيد قيمة مشتقة من الحقول دون تخزين أي شيء جديد.

bool get isStrong => gravity > 5;

تظل Enums كما هي

رغم قدراتها الإضافية، تحتفظ enhanced enums بـ values وindex وname. ولا تفقد شيئًا بإضافة الحقول والطرق.

print(Planet.values.length); // 2

متى نستخدم Enhanced Enum

استخدم enhanced enum عندما يملك كل خيار بيانات مرتبطة به، مثل لون مع رمز hex. فهذا يحافظ على البيانات والخيار معًا.

تحقق سريع

ما الذي يجب أن تتضمنه enhanced enum التي تحتوي على حقول دائمًا؟

مراجعة: Enhanced Enums

تعلمت أن enhanced enums تحتوي على fields وmethods من خلال مُنشئ const، بحيث يحمل كل عضو بياناته وسلوكه الخاصين. 🚀

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

هل درس «Enums محسّنة بالحقول والطرق» مجاني؟

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

ماذا ستتعلم في «Enums محسّنة بالحقول والطرق»؟

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

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

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

كم من الوقت يستغرق درس «Enums محسّنة بالحقول والطرق»؟

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

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

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

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

  1. التصريح بـEnums عادية واستخدامها
  2. قيم Enum وindex وname
  3. Enums محسّنة بالحقول والطرق
  4. استخدام switch مع Enums بشكل شامل
← العودة إلى Dart Academy