0Pricing
Java Academy · درس

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

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

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

العبارات مقابل التعبيرات

تنفذ العبارة إجراءً، بينما ينتج التعبير قيمة. وتتيح Java الحديثة استخدام switch كتعبير، لذا يمكنك إسناد نتيجته مباشرةً إلى متغير.

إسناد نتيجة switch

عندما يظهر switch في الجانب الأيمن من =، يوفّر كل فرع القيمة الناتجة. وتعيد صيغة السهم القيمة التي تأتي بعد -> تلقائيًا.

public class Main {
    public static void main(String[] args) {
        int day = 6;
        String type = switch (day) {
            case 6, 7 -> "Weekend";
            default -> "Weekday";
        };
        System.out.println(type);
    }
}

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

لأن تعبير switch جزء من عبارة، فإنه ينتهي بـفاصلة منقوطة بعد القوس المعقوف الختامي. ويُعد نسيانها خطأً شائعًا عند الترجمة.

public class Main {
    public static void main(String[] args) {
        int n = 2;
        int doubled = switch (n) {
            case 1 -> 2;
            case 2 -> 4;
            default -> 0;
        };
        System.out.println(doubled);
    }
}

استيفاء جميع الحالات

يجب أن يغطي تعبير switch كل قيمة ممكنة. وبالنسبة إلى معظم الأنواع، يعني ذلك تضمين فرع default، وإلا فلن تُترجم الشيفرة.

public class Main {
    public static void main(String[] args) {
        int score = 85;
        char grade = switch (score / 10) {
            case 10, 9 -> 'A';
            case 8 -> 'B';
            case 7 -> 'C';
            default -> 'F';
        };
        System.out.println(grade);
    }
}

لا تحتاج التعدادات إلى default

عند استخدام switch مع enum وتغطية كل الثوابت، يعرف المترجم أن جميع الحالات مستوفاة. لذلك يصبح فرع default اختياريًا.

public class Main {
    enum Dir { NORTH, SOUTH, EAST, WEST }
    public static void main(String[] args) {
        Dir d = Dir.EAST;
        String label = switch (d) {
            case NORTH -> "Up";
            case SOUTH -> "Down";
            case EAST -> "Right";
            case WEST -> "Left";
        };
        System.out.println(label);
    }
}

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

يمكن للدالة أن تُرجع تعبير switch مباشرةً باستخدام return، مما يتيح إنشاء دوال بحث مختصرة.

public class Main {
    static int sides(String shape) {
        return switch (shape) {
            case "triangle" -> 3;
            case "square" -> 4;
            case "pentagon" -> 5;
            default -> 0;
        };
    }
    public static void main(String[] args) {
        System.out.println(sides("square"));
    }
}

النتائج الرقمية

يمكن للفروع إرجاع أرقام أو إجراء عمليات حسابية أو استدعاء دوال. ويجب أن ينتج كل فرع قيمة من النوع نفسه الذي ينتمي إليه المتغير المُسنَد إليه.

public class Main {
    public static void main(String[] args) {
        int month = 2;
        int days = switch (month) {
            case 2 -> 28;
            case 4, 6, 9, 11 -> 30;
            default -> 31;
        };
        System.out.println("Days: " + days);
    }
}

استخدام النتيجة مباشرةً

يمكن استخدام القيمة الناتجة من تعبير switch فورًا، مثل استخدامها داخل استدعاء println.

public class Main {
    public static void main(String[] args) {
        int code = 1;
        System.out.println("Status: " + switch (code) {
            case 0 -> "OK";
            case 1 -> "Warning";
            default -> "Error";
        });
    }
}

اتساق النوع

يجب أن تتفق جميع الفروع على نوع النتيجة. فإذا أعاد أحد الفروع قيمة من النوع int وأعاد فرع آخر قيمة من النوع String، فلن تُترجم الشيفرة. احرص على اتساق الفروع.

public class Main {
    public static void main(String[] args) {
        int n = 3;
        double factor = switch (n) {
            case 1 -> 0.5;
            case 2 -> 1.0;
            default -> 1.5;
        };
        System.out.println(factor);
    }
}

استبدال سلاسل المعامل الثلاثي

غالبًا ما تكون قراءة تعبير switch أوضح من معاملات ثلاثية متداخلة عند تحويل قيمة واحدة إلى عدة نتائج.

public class Main {
    public static void main(String[] args) {
        int rating = 4;
        String stars = switch (rating) {
            case 1 -> "*";
            case 2 -> "**";
            case 3 -> "***";
            case 4 -> "****";
            default -> "*****";
        };
        System.out.println(stars);
    }
}

الدمج مع المتغيرات

يمكنك استخدام نتيجة تعبير switch في حسابات إضافية، تمامًا مثل أي قيمة أخرى.

public class Main {
    public static void main(String[] args) {
        int tier = 2;
        int discount = switch (tier) {
            case 1 -> 5;
            case 2 -> 10;
            default -> 0;
        };
        int price = 100 - discount;
        System.out.println("Price: " + price);
    }
}

تحقق سريع

لماذا يجب أن يتضمن تعبير switch عادةً فرع default؟

مراجعة

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

  • إنه ينتج قيمة يمكنك إسنادها أو إرجاعها
  • أنهِ عملية الإسناد بـفاصلة منقوطة
  • يجب أن يستوفي جميع الحالات (وعادةً ما يحتاج إلى default)
  • لا تحتاج التعدادات التي تغطي جميع الثوابت إلى default
  • يجب أن تشترك جميع الفروع في نوع النتيجة نفسه

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

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

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

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

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

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

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

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

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

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

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

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

  1. صيغة switch بأسلوب السهم
  2. استخدام switch كتعبير
  3. الكلمة المفتاحية yield
  4. حالات متعددة التسميات
← العودة إلى Java Academy