تخطَّ إلى المحتوى

التعدادات

التعدادات تسمح لك بتعريف نوع يمكن أن يكون واحداً من عدة قيم محددة.

تعداد اللون {
أحمر,
أخضر,
أزرق
}
دع لوني = اللون::أخضر;
دع لون_آخر = اللون::أحمر;
دالة اعرض_لون(ل: اللون) {
طابق ل {
اللون::أحمر => {
اطبع("اللون أحمر");
}
اللون::أخضر => {
اطبع("اللون أخضر");
}
اللون::أزرق => {
اطبع("اللون أزرق");
}
}
}

مثال عملي لتعداد يمثل حالات مختلفة:

تعداد الحالة {
نشط,
معلق,
منتهي
}
دالة اعرض_حالة(ح: الحالة) {
طابق ح {
الحالة::نشط => {
اطبع("العنصر نشط");
}
الحالة::معلق => {
اطبع("العنصر معلق");
}
الحالة::منتهي => {
اطبع("العنصر منتهي");
}
}
}

كنوز توفر نوع اختياري<T> المدمج للقيم التي قد تكون موجودة أو غير موجودة:

// قيمة موجودة
دع قيمة: اختياري<ص64> = بعض(42);
// لا توجد قيمة
دع فارغ: اختياري<ص64> = عدم;

استخدام النوع الاختياري

Section titled “استخدام النوع الاختياري”
دالة اقسم(أ: ص64, ب: ص64) -> اختياري<ص64> {
إذا ب == 0 {
أرجع عدم; // لا يمكن القسمة على صفر
}
أرجع بعض(أ / ب);
}
// الاستخدام
دع ن1 = اقسم(10, 2);
دع نتيجة = ن1.افتح_أو(0); // 5 أو 0 إذا فشل
اطبع_صحيح(نتيجة);
// التحقق من الوجود
إذا ن1.يوجد() {
اطبع("القسمة نجحت!");
}

للتعامل مع العمليات التي قد تنجح أو تفشل:

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