0Pricing
Kotlin Academy · درس

خصائص Enum وطرائقها

أضيفوا السلوك

خصائص Enum وطرائقها درس مجاني في Kotlin Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kotlin Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kotlin Academy 4 دروس في المجموع.

يمكن للتعدادات حمل بيانات

يمكن لثوابت التعداد حمل خصائص. عرّف مُنشئًا في فئة التعداد ومرّر القيم عند إدراج كل ثابت.

enum class Coin(val cents: Int) {
    PENNY(1), NICKEL(5), DIME(10)
}

fun main() {
    println(Coin.DIME.cents)
}

وسائط المُنشئ

القيم الموجودة بين القوسين بعد كل ثابت هي وسائط مُنشئ التعداد. وتصبح هذه القيم خصائص للقراءة فقط في ذلك الثابت.

enum class Planet(val gravity: Double) {
    EARTH(9.8), MOON(1.6)
}

fun main() {
    println(Planet.MOON.gravity)
}

خصائص متعددة

يمكن للتعداد تعريف عدة خصائص في الوقت نفسه.

enum class Fruit(val color: String, val calories: Int) {
    APPLE("red", 95),
    BANANA("yellow", 105)
}

fun main() {
    val f = Fruit.BANANA
    println("${f.color} ${f.calories}")
}

إضافة الدوال

يمكنك تعريف دوال عادية داخل جسم التعداد. وتشترك جميع الثوابت فيها.

enum class Temp(val celsius: Int) {
    COLD(5), WARM(25);

    fun toFahrenheit(): Int = celsius * 9 / 5 + 32
}

fun main() {
    println(Temp.WARM.toFahrenheit())
}

قاعدة الفاصلة المنقوطة

عندما يحتوي التعداد على أعضاء تتجاوز الثوابت، مثل الدوال أو الخصائص، يجب وضع فاصلة منقوطة بعد آخر ثابت.

enum class Op {
    ADD, SUB;

    fun describe() = "Operation: $name"
}

fun main() {
    println(Op.ADD.describe())
}

دوال مجردة لكل ثابت

يمكن للتعدادات تعريف دوال مجردة يعيد كل ثابت تطبيقها، مما يمنح كل ثابت سلوكه الخاص.

enum class Math {
    PLUS { override fun apply(a: Int, b: Int) = a + b },
    TIMES { override fun apply(a: Int, b: Int) = a * b };

    abstract fun apply(a: Int, b: Int): Int
}

fun main() {
    println(Math.TIMES.apply(3, 4))
}

الخصائص المحسوبة

يمكن لمُنشئات الخصائص حساب قيم استنادًا إلى بيانات الثابت.

enum class Account(val balance: Int) {
    SAVINGS(1000), CHECKING(50);

    val isRich: Boolean get() = balance > 500
}

fun main() {
    println(Account.SAVINGS.isRich)
}

دمج البيانات والسلوك

تتيح الخصائص والدوال معًا للتعداد تمثيل مجال غني ومغلق.

enum class Shape(val sides: Int) {
    TRIANGLE(3), SQUARE(4);

    fun describe() = "$name has $sides sides"
}

fun main() {
    println(Shape.SQUARE.describe())
}

استخدام الخصائص في المنطق

تكون خصائص الثوابت مفيدة في العمليات الحسابية والشروط.

enum class Tier(val discount: Int) {
    BRONZE(5), GOLD(20)
}

fun price(base: Int, tier: Tier) = base - base * tier.discount / 100

fun main() {
    println(price(100, Tier.GOLD))
}

القيم الافتراضية للخصائص

تدعم مُنشئات التعداد قيم الوسائط الافتراضية مثل أي مُنشئ آخر.

enum class Role(val canEdit: Boolean = false) {
    VIEWER, EDITOR(true)
}

fun main() {
    println(Role.VIEWER.canEdit)
    println(Role.EDITOR.canEdit)
}

نموذج متكامل

يمثّل هذا التعداد حالات HTTP باستخدام البيانات والسلوك معًا.

enum class Http(val code: Int) {
    OK(200), NOT_FOUND(404);

    fun isError() = code >= 400
}

fun main() {
    println(Http.NOT_FOUND.isError())
}

تحقق سريع

اختبر فهمك لخصائص التعدادات ودوالها.

مراجعة

تعلمت أن التعدادات يمكنها حمل السلوك:

  • أضف مُنشئًا لمنح الثوابت خصائص.
  • عرّف الدوال المشتركة، واستخدم فاصلة منقوطة بعد الثوابت.
  • تتيح الدوال المجردة لكل ثابت تعريف سلوكه الخاص.
  • تعمل الخصائص المحسوبة وذات القيم الافتراضية كالمعتاد.
enum class Coin(val cents: Int) {
    PENNY(1), DIME(10);
    fun double() = cents * 2
}

fun main() {
    println(Coin.DIME.double())
}

الأسئلة الشائعة

هل درس «خصائص Enum وطرائقها» مجاني؟

نعم — نص درس «خصائص Enum وطرائقها» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Kotlin Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Kotlin Academy 4 دروس في المجموع.

ماذا ستتعلم في «خصائص Enum وطرائقها»؟

أضيفوا السلوك تتمرن على Kotlin Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Kotlin Academy؟

لا تُشترط خبرة سابقة. Kotlin Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «خصائص Enum وطرائقها»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Kotlin Academy هذا؟

نعم. كل درس في Kotlin Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. تعريف Enums
  2. خصائص Enum وطرائقها
  3. Enums مع when
  4. قيم Enum وترتيباتها
← العودة إلى Kotlin Academy