التعدادات
التعدادات (Enums)
Section titled “التعدادات (Enums)”التعدادات تسمح لك بتعريف نوع يمكن أن يكون واحداً من عدة قيم محددة.
تعريف تعداد بسيط
Section titled “تعريف تعداد بسيط”تعداد اللون { أحمر, أخضر, أزرق}استخدام التعداد
Section titled “استخدام التعداد”دع لوني = اللون::أخضر;دع لون_آخر = اللون::أحمر;المطابقة مع التعدادات
Section titled “المطابقة مع التعدادات”دالة اعرض_لون(ل: اللون) { طابق ل { اللون::أحمر => { اطبع("اللون أحمر"); } اللون::أخضر => { اطبع("اللون أخضر"); } اللون::أزرق => { اطبع("اللون أزرق"); } }}تعداد الحالة
Section titled “تعداد الحالة”مثال عملي لتعداد يمثل حالات مختلفة:
تعداد الحالة { نشط, معلق, منتهي}
دالة اعرض_حالة(ح: الحالة) { طابق ح { الحالة::نشط => { اطبع("العنصر نشط"); } الحالة::معلق => { اطبع("العنصر معلق"); } الحالة::منتهي => { اطبع("العنصر منتهي"); } }}النوع الاختياري (Optional)
Section titled “النوع الاختياري (Optional)”كنوز توفر نوع اختياري<T> المدمج للقيم التي قد تكون موجودة أو غير موجودة:
// قيمة موجودةدع قيمة: اختياري<ص64> = بعض(42);
// لا توجد قيمةدع فارغ: اختياري<ص64> = عدم;استخدام النوع الاختياري
Section titled “استخدام النوع الاختياري”دالة اقسم(أ: ص64, ب: ص64) -> اختياري<ص64> { إذا ب == 0 { أرجع عدم; // لا يمكن القسمة على صفر } أرجع بعض(أ / ب);}
// الاستخدامدع ن1 = اقسم(10, 2);دع نتيجة = ن1.افتح_أو(0); // 5 أو 0 إذا فشلاطبع_صحيح(نتيجة);
// التحقق من الوجودإذا ن1.يوجد() { اطبع("القسمة نجحت!");}نوع النتيجة (Result)
Section titled “نوع النتيجة (Result)”للتعامل مع العمليات التي قد تنجح أو تفشل:
دالة قسمة(أ: صحيح, ب: صحيح) -> نتيجة<صحيح, نص> { إذا ب == 0 { أرجع فشل("لا يمكن القسمة على صفر"); } أرجع موافق(أ / ب);}
// الاستخدامدع ن1 = قسمة(20, 4);طباعة("{}", ن1); // موافق(5)
دع ن2 = قسمة(10, 0);طباعة("{}", ن2); // فشل(لا يمكن القسمة على صفر)التحقق من العمر
Section titled “التحقق من العمر”دالة تحقق_عمر(عمر: صحيح) -> نتيجة<نص, نص> { إذا عمر < 0 { أرجع فشل("العمر لا يمكن أن يكون سالباً"); } وإلا إذا عمر > 150 { أرجع فشل("العمر غير واقعي"); } أرجع موافق("العمر صالح");}المثال الكامل
Section titled “المثال الكامل”// تعداد الألوانتعداد اللون { أحمر, أخضر, أزرق}
// تعداد الحالةتعداد الحالة { نشط, معلق, منتهي}
دالة اعرض_لون(ل: اللون) { طابق ل { اللون::أحمر => { اطبع("أحمر"); } اللون::أخضر => { اطبع("أخضر"); } اللون::أزرق => { اطبع("أزرق"); } }}
دالة اعرض_حالة(ح: الحالة) { طابق ح { الحالة::نشط => { اطبع("نشط"); } الحالة::معلق => { اطبع("معلق"); } الحالة::منتهي => { اطبع("منتهي"); } }}
// قسمة آمنة مع اختياريدالة اقسم(أ: ص64, ب: ص64) -> اختياري<ص64> { إذا ب == 0 { أرجع عدم; } أرجع بعض(أ / ب);}
دالة رئيسية() -> صحيح { اطبع("=== التعدادات ===");
// الألوان دع لون1 = اللون::أخضر; اعرض_لون(لون1);
دع لون2 = اللون::أحمر; اعرض_لون(لون2);
// الحالات اطبع("=== الحالات ==="); دع حالة1 = الحالة::نشط; اعرض_حالة(حالة1);
// الاختياري اطبع("=== الاختياري ===");
دع ن1 = اقسم(10, 2); اطبع("10 / 2 = "); اطبع_صحيح(ن1.افتح_أو(0));
دع ن2 = اقسم(10, 0); إذا !ن2.يوجد() { اطبع("القسمة على صفر فشلت"); }
أرجع 0;}