في عالم لغة برمجة دارت (Dart)، تأتي الـ Enum كأداة قوية تسهم في تعريف مجموعة محددة وثابتة من القيم. بفضل هذا النوع الخاص، يمكن للمطورين تمثيل مفاهيم ثابتة مثل أيام الأسبوع أو حالات معينة بطريقة تجعل الأكواد أكثر قراءة وصيانة. في هذا المقال، سنقوم باستكشاف مفهوم الـ Enum في دارت وكيفية استخدامه لتحقيق تبسيط وتنظيم أكثر في الأكواد.
مفهوم الـ Enum في Dart:
في لغة برمجة دارت (Dart)، الـ Enum هو نوع من البيانات المستخدم لتعريف مجموعة من القيم الثابتة المسماة. يتيح لك الـ Enum تعريف مجموعة محددة من القيم التي لا يمكن تغييرها أو تعديلها أثناء تنفيذ البرنامج. يتم تحديد الـ Enum باستخدام الكلمة المفتاحية “enum” في دارت.
يمكنك استخدام الـ Enum لتعريف مجموعة من القيم الثابتة واستخدامها في برمجتك لتجنب الأخطاء الإملائية وتحسين قابلية صيانة الأكواد.
طريقة كتابة الـ Enum في دارت
يتم بناء الـ Enum في Dart بالشكل التالي:
enum enumName { constantName1, constantName2, constantName3, ... constantNameN }
أمثلة على الـ Enum في دارت:
مثال 1: الـ Enum في Dart
في هذا المثال، سنقوم بإنشاء الـ Enum “Days” الذي يحتوي على سبعة أيام. وسنستخدم الـ Enum في دالة main()
.
enum Days { sunday, monday, tuesday, wednesday, thursday, friday, saturday } void main() { var today = Days.friday; switch (today) { case Days.sunday: print("اليوم هو الأحد."); break; case Days.monday: print("اليوم هو الاثنين."); break; case Days.tuesday: print("اليوم هو الثلاثاء."); break; case Days.wednesday: print("اليوم هو الأربعاء."); break; case Days.thursday: print("اليوم هو الخميس."); break; case Days.friday: print("اليوم هو الجمعة."); break; case Days.saturday: print("اليوم هو السبت."); break; } }
نتيجة الكود:
اليوم هو الجمعة.
في هذا المثال، قمنا بإنشاء الـ Enum “days” الذي يحتوي على أيام الأسبوع. ثم قمنا باستخدام الـ Enum في دالة main()
حيث تم تعيين قيمة today
كـ days.Friday
. تم استخدام switch case لطباعة اليوم الحالي بناءً على القيمة المعينة في today
.
مثال 2: الـ Enum في Dart
في هذا المثال، سنقوم بإنشاء الـ Enum “Gender” الذي يحتوي على ثلاث قيم: Male، Female، و Other. وسنستخدم الـ Enum في كلاس “Person”.
enum Gender { male, female, other } class Person { // الخصائص String? firstName; String? lastName; Gender? gender; // الـ Constructor Person(this.firstName, this.lastName, this.gender); // دالة العرض void display() { print("الاسم الأول: $firstName"); print("الاسم الأخير: $lastName"); print("الجنس: $gender"); } } void main() { Person p1 = Person("جون", "دو", Gender.male); p1.display(); Person p2 = Person("ساره", "شارما", Gender.female); p2.display(); }
نتيجة الكود:
الاسم الأول: جون الاسم الأخير: دو الجنس: Gender.Male الاسم الأول: ساره الاسم الأخير: شارما الجنس: Gender.Female
في هذا المثال، قمنا بإنشاء الـ Enum “Gender” الذي يحتوي على ثلاث قيم: Male، Female، و Other. ثم قمنا بإنشاء كلاس “Person” يحتوي على خصائص firstName وlastName وgender. تم استخدام الـ Enum “Gender” كنوع لخاصية gender في كلاس “Person”. ثم قمنا بإنشاء كائنين من الكلاس “Person” وعرض بياناتهما باستخدام دالة display()
.
طباعة جميع قيم الـ Enum في دارت
يمكننا طباعة جميع قيم الـ Enum باستخدام حلقة for
كما في المثال التالي:
enum Days { sunday, monday, tuesday, wednesday, thursday, friday, saturday } void main() { for (Days day in Days.values) { print(day); } }
نتيجة الكود:
Days.sunday Days.monday Days.tuesday Days.wednesday Days.thursday Days.friday Days.saturday
في هذا المثال، قمنا بإنشاء الـ Enum “Days” الذي يحتوي على أيام الأسبوع. ثم استخدمنا حلقة for
للتكرار على جميع القيم الموجودة في الـ Enum وطباعتها.
مزايا الـ Enum في Dart
- يستخدم لتعريف مجموعة من الثوابت المسماة.
- يجعل الكود أكثر قراءةً وصيانةً.
- يجعل الكود أكثر قابلية لإعادة الاستخدام ويسهل على المطورين استخدامه.
خصائص الـ Enum
- يجب أن يحتوي على قيمة ثابتة واحدة على الأقل.
- يتم تعريف الـ Enum خارج الكلاس.
- يستخدم لتخزين عدد كبير من القيم الثابتة.
الـ Enum المحسن في Dart
في Dart، يمكنك تعريف الـ Enum مع أعضاء. على سبيل المثال، يمكنك استخدام الـ Enum في برنامج المحاسبة الخاص بك لتخزين أنواع الشركات مثل الشركة الفردية، شراكة، شركة مساهمة، وشركة ذات مسؤولية محدودة. يمكنك تعريف الـ Enum بأعضاء كما هو موضح في المثال التالي:
enum CompanyType { soleProprietorship("الشركة الفردية"), partnership("الشراكة"), corporation("شركة مساهمة"), limitedLiabilityCompany("شركة ذات مسؤولية محدودة"); // الأعضاء final String text; const CompanyType(this.text); } void main() { CompanyType soleProprietorship = CompanyType.soleProprietorship; print(soleProprietorship.text); }
نتيجة الكود:
الشركة الفردية
في هذا المثال، قمنا بتعريف الـ Enum “CompanyType” مع الأعضاء. تم تعريف الأعضاء باستخدام القيم المرتبطة بها والتي تم تمريرها في الـ Constructor. ثم تم إنشاء كائن “soleProprietorship” من الكلاس “CompanyType” وتم طباعة القيمة المرتبطة بها باستخدام الخاصية text.
تعد الـ Enum في لغة دارت أداةً مهمةً تمنح المطورين إمكانية تمثيل القيم الثابتة بشكل واضح ومنظم. من خلال تعريفها باستخدام الكلمة المحجوزة “enum”، يمكنك تجنب الأخطاء الإملائية وتحسين فهم الأكواد للفريق وزيادة قابلية صيانتها. استفد من هذه الأداة لجعل برمجتك في دارت أكثر فعالية وسهولة.