0Pricing
Kotlin Academy · درس

استخدام when كتعبير

أعيدوا القيم من when

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

when كتعبير

إن when في Kotlin أكثر من مجرد تعليمة switch؛ فهو تعبير، أي إنه ينتج قيمة يمكنك إسنادها أو إرجاعها.

يجعل ذلك منطق التفرع موجزًا وسهل القراءة.

إرجاع قيمة

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

fun main() {
    val day = 3
    val name = when (day) {
        1 -> "Monday"
        2 -> "Tuesday"
        3 -> "Wednesday"
        else -> "Other"
    }
    println(name)
}

يلزم استخدام else

عند استخدام when كتعبير، يجب أن يكون شاملًا لجميع الحالات. وبالنسبة إلى القيم الاعتباطية، يعني ذلك وجود فرع else.

من دونه، لا يستطيع المترجم ضمان إنتاج قيمة.

fun grade(score: Int): String = when {
    score >= 90 -> "A"
    score >= 80 -> "B"
    else -> "C"
}

fun main() {
    println(grade(85))
}

قيم متعددة لكل فرع

افصل عدة قيم بفواصل لتشارك فرعًا واحدًا.

هذا أنظف من تكرار الجسم نفسه.

fun main() {
    val day = 6
    val type = when (day) {
        1, 2, 3, 4, 5 -> "Weekday"
        6, 7 -> "Weekend"
        else -> "Invalid"
    }
    println(type)
}

when دون وسيط

احذف الموضوع، وعندها يصبح كل فرع شرطًا منطقيًا.

يستبدل ذلك سلسلة من if/else if بكتلة مرتبة.

fun main() {
    val temp = 18
    val feel = when {
        temp < 0 -> "Freezing"
        temp < 15 -> "Cold"
        temp < 25 -> "Mild"
        else -> "Hot"
    }
    println(feel)
}

النطاقات في الفروع

يمكن للفروع اختبار النطاقات باستخدام in.

يعبّر ذلك عن الفئات العددية بطريقة طبيعية جدًا.

fun main() {
    val score = 73
    val band = when (score) {
        in 0..59 -> "Fail"
        in 60..79 -> "Pass"
        in 80..100 -> "Excellent"
        else -> "Invalid"
    }
    println(band)
}

فحص الأنواع في الفروع

يمكن للفروع فحص الأنواع باستخدام is.

يمكن أن تختلف نتيجة كل فرع، ويُرجع when النوع المشترك.

fun describe(x: Any): String = when (x) {
    is Int -> "Integer"
    is String -> "Text"
    else -> "Unknown"
}

fun main() {
    println(describe(42))
    println(describe("hi"))
}

كتل الفروع

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

fun main() {
    val n = 5
    val result = when {
        n > 0 -> {
            val doubled = n * 2
            "Positive, doubled is " + doubled
        }
        else -> "Non-positive"
    }
    println(result)
}

إرجاع when مباشرةً

يمكن للدالة إرجاع تعبير when مباشرةً باستخدام جسم ذي تعبير واحد.

هذا أسلوب شائع ونظيف جدًا في Kotlin.

fun sign(n: Int): String = when {
    n > 0 -> "positive"
    n < 0 -> "negative"
    else -> "zero"
}

fun main() {
    println(sign(-4))
}

التقاط الموضوع

يمكنك التصريح عن الموضوع داخل when ليكون متاحًا في الفروع.

يحافظ ذلك على حصر قيمة مؤقتة في نطاق ضيق.

fun describeLength(text: String): String = when (val len = text.length) {
    0 -> "empty"
    in 1..5 -> "short (" + len + ")"
    else -> "long (" + len + ")"
}

fun main() {
    println(describeLength("hello"))
}

تجميع المفاهيم

بصفته تعبيرًا، يُنتج when قيمًا بطريقة قوية:

  • يقدّم كل فرع نتيجة
  • يجعل else التعبير شاملًا لجميع الحالات
  • يدعم الفواصل والنطاقات والأنواع والكتل
fun ticketPrice(age: Int): Int = when {
    age < 6 -> 0
    age < 18 -> 10
    age >= 65 -> 8
    else -> 15
}

fun main() {
    println(ticketPrice(4))
    println(ticketPrice(70))
}

تحقق سريع

اختبر مدى فهمك لاستخدام when كتعبير.

مراجعة

لقد تعلمت استخدام when كتعبير:

  • يُرجع قيمة الفرع المطابق
  • يحتاج إلى else ليكون شاملًا لجميع الحالات
  • يدعم الفواصل والنطاقات وفحص الأنواع والكتل

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

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

هل درس «استخدام when كتعبير» مجاني؟

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

ماذا ستتعلم في «استخدام when كتعبير»؟

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

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

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

كم من الوقت يستغرق درس «استخدام when كتعبير»؟

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

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

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

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

  1. استخدام when كتعبير
  2. التحويلات الذكية
  3. المعاملان is وas
  4. when الشاملة
← العودة إلى Kotlin Academy