تعريف Enums
مجموعات من الثوابت المسماة
تعريف Enums درس مجاني في Kotlin Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kotlin Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kotlin Academy 4 دروس في المجموع.
ما هو التعداد؟
يعرّف enum class مجموعة ثابتة من الثوابت المسماة. استخدمه عندما لا يمكن للقيمة أن تكون إلا أحد خيارات مجموعة صغيرة ومعروفة.
- كل ثابت هو مثيل من نوع التعداد.
- يضمن المصرّف عدم إمكانية وجود قيم أخرى.
enum class Direction {
NORTH, SOUTH, EAST, WEST
}
fun main() {
val d = Direction.NORTH
println(d)
}لماذا لا نستخدم السلاسل النصية فقط؟
تسمح السلاسل النصية بالأخطاء الإملائية والقيم غير الصالحة. يجعل التعداد الحالات غير الصالحة مستحيلة: يرفض المصرّف أي قيمة خارج المجموعة المعلنة.
enum class Status { ACTIVE, INACTIVE }
fun main() {
val s: Status = Status.ACTIVE
println("Current: $s")
}تعريف الثوابت
تُدرج الثوابت بين القوسين المعقوفين، وتُفصل بينها بفواصل. ووفقًا للعرف، تُكتب باستخدام UPPER_SNAKE_CASE.
enum class Size {
SMALL, MEDIUM, LARGE, EXTRA_LARGE
}
fun main() {
println(Size.EXTRA_LARGE)
}كل ثابت هو كائن
كل ثابت في التعداد هو مثيل مفرد من نوع التعداد. ويُشار إليه دائمًا من خلال اسم التعداد، مثل Color.RED.
enum class Color { RED, GREEN, BLUE }
fun main() {
val c = Color.GREEN
println(c == Color.GREEN)
}مقارنة قيم التعداد
يمكن مقارنة ثوابت التعداد باستخدام ==. وبما أن كل ثابت هو مثيل مفرد، فإن التساوي وتطابق الهوية المرجعية متكافئان.
enum class Light { RED, YELLOW, GREEN }
fun main() {
val signal = Light.RED
if (signal == Light.RED) println("Stop")
}قراءة الخاصية name
يوفّر كل ثابت خاصية مضمّنة باسم name، وهي السلسلة النصية المطابقة تمامًا لتعريفه.
enum class Planet { MERCURY, VENUS, EARTH }
fun main() {
val p = Planet.EARTH
println(p.name)
}استخدام valueOf مع سلسلة نصية
تحوّل الدالة المُنشأة valueOf() السلسلة النصية المطابقة إلى ثابت التعداد. وتؤدي السلسلة غير المطابقة إلى طرح استثناء.
enum class Day { MON, TUE, WED }
fun main() {
val d = Day.valueOf("TUE")
println(d)
}استخدام التعدادات كوسائط
تُعد التعدادات مناسبة جدًا لوسائط الدوال، إذ لا يمكن للمستدعين تمرير سوى أحد الثوابت الصالحة.
enum class Level { LOW, HIGH }
fun setVolume(level: Level) {
println("Volume set to $level")
}
fun main() {
setVolume(Level.HIGH)
}التعدادات تحسّن قابلية القراءة
تشرح الشيفرة التي تحتوي على Direction.NORTH نفسها. وبالمقارنة مع الأرقام السحرية مثل 0 أو 1، تكون الغاية واضحة.
enum class Gear { PARK, DRIVE, REVERSE }
fun main() {
val current = Gear.DRIVE
println("Gear is $current")
}مثال واقعي
تمثيل مجموعة صغيرة من أنواع أوراق اللعب استخدام مثالي للتعداد.
enum class Suit { HEARTS, DIAMONDS, CLUBS, SPADES }
fun main() {
for (suit in Suit.values()) {
println(suit)
}
}التعدادات ذات الثابت الواحد
حتى وجود ثابت واحد صالح، ويُستخدم غالبًا لتمثيل قيمة مضمونة التفرد، أي مفردًا بسيطًا.
enum class AppMode { PRODUCTION }
fun main() {
println(AppMode.PRODUCTION)
}تحقق سريع
اختبر فهمك لتعريف التعدادات.
مراجعة
تعلمت كيفية تعريف التعدادات:
- يعلن
enum classمجموعة ثابتة من الثوابت المسماة. - كل ثابت هو مثيل مفرد يمكن الوصول إليه عبر اسم التعداد.
- تربط
nameوvalueOf()بين الثوابت والسلاسل النصية. - تمنع التعدادات القيم غير الصالحة أثناء الترجمة.
enum class Direction { NORTH, SOUTH, EAST, WEST }
fun main() {
println(Direction.valueOf("EAST").name)
}تعلم Kotlin مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 51
- الدروس
- 203
الأسئلة الشائعة
هل درس «تعريف Enums» مجاني؟
نعم — نص درس «تعريف Enums» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Kotlin Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Kotlin Academy 4 دروس في المجموع.
ماذا ستتعلم في «تعريف Enums»؟
مجموعات من الثوابت المسماة تتمرن على Kotlin Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Kotlin Academy؟
لا تُشترط خبرة سابقة. Kotlin Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «تعريف Enums»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Kotlin Academy هذا؟
نعم. كل درس في Kotlin Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.