التعدادات
جزء من قسم الأساسيات في رحلة Solidity على Coddy. الدرس 44 من 53.
يُعرِّف التعداد مجموعة صغيرة من الخيارات المُسمّاة. أعلن عن أعضائه بالترتيب، ثم أشر إلى عضو بصيغة TypeName.MemberName. يمتلك العضو الأول قيمة رقمية تساوي صفرًا، والعضو التالي قيمة تساوي واحدًا، وهكذا. تجعل الخيارات المُسمّاة الحالة أسهل قراءةً من الأرقام غير المُفسَّرة.
أعلن عن ذلك على مستوى العقد:
enum Phase { Waiting, Packing, Complete }استخدمه داخل الدالة main المتوفرة:
Phase phase = Phase.Packing;
console.log(uint256(phase));يسرد التصريح Waiting وPacking وComplete. وPacking هو العضو الثاني، ولذلك يتحول إلى واحد. يمكن أن يفشل تحويل عدد عشوائي إلى تعداد عندما يكون العدد خارج النطاق المحدد له، لذا استخدم الأعضاء المُسمّاة هنا.
تمتلك أعضاء التعداد قيمًا رقمية تبدأ من الصفر وفق ترتيب التصريح.
التحدي
سهلعرّف enum Mode بالقيم Idle وRunning وFinished بهذا الترتيب. اختر Running عندما تكون active تساوي true، وإلا فاختر Idle، واطبع القيمة الرقمية.
تمرّر الاختبارات الوسائط إلى main بهذا الترتيب: bool active. يبدأ كل اختبار بحالة عقد جديدة.
استخدم console.log للإخراج المطلوب. اطبع القيم المطلوبة فقط، واحدة في كل سطر، من دون تسميات إضافية ما لم تحدد المهمة خلاف ذلك.
جرّب بنفسك
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import "forge-std/console.sol";
contract Main {
function main(bool active) external view {
// اكتب حلك هنا.
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
2المتغيرات والأنواع
الأعداد الصحيحة غير الموقعةالمدخلات والمخرجاتالأعداد الصحيحة الموقعةالقيم المنطقيةالسلاسل النصية في الذاكرةبطاقة الملف الشخصي5الدوال
معاملات الدوالإرجاع القيمالدوال النقيةاستدعاءات الدوال المساعدةالحسابات القابلة لإعادة الاستخدامتدرّب بنفسك: Playground لـ Solidity