0Pricing
Java Academy · درس

تداخل المعاملات الثلاثية

سلسِل القرارات بعناية

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

ما المعامل الثلاثي المتداخل؟

يضع المعامل الثلاثي المتداخل معاملًا ثلاثيًا آخر داخل أحد فروعه.

يتيح لك ذلك الاختيار بين ثلاث نتائج أو أكثر بدلًا من نتيجتين فقط.

والنتيجة سلسلة من الشروط تُقيَّم من اليسار إلى اليمين.

int score = 75;
String grade = score >= 90 ? "A" : score >= 80 ? "B" : "C";

كيفية التجميع

المعامل الثلاثي مرتبط من اليمين. وهذا يعني أن الفرع الخاطئ يضم بقية السلسلة.

لذلك تُقرأ a ? x : b ? y : z هكذا: a ? x : (b ? y : z).

ينقل كل : التنفيذ إلى الشرط التالي.

// reads as: a ? x : (b ? y : z)
String r = false ? "x" : true ? "y" : "z"; // r = "y"

اختيار من ثلاثة اتجاهات

يُصنَّف الرقم هنا على أنه سالب أو صفر أو موجب.

يتحقق الشرط الأول من كونه سالبًا؛ أما فرعه الخاطئ فيتحقق مما إذا كان صفرًا أم موجبًا.

public class Main {
    public static void main(String[] args) {
        int n = 0;
        String sign = n < 0 ? "negative" : n == 0 ? "zero" : "positive";
        System.out.println(sign);
    }
}

مثال على التقدير

من الاستخدامات التقليدية ربط النتيجة بتقدير حرفي.

يُتحقَّق من كل شرط بالترتيب حتى يصبح أحدها صحيحًا، ثم يُعاد الحرف المطابق.

public class Main {
    public static void main(String[] args) {
        int score = 83;
        String grade = score >= 90 ? "A"
            : score >= 80 ? "B"
            : score >= 70 ? "C" : "F";
        System.out.println(grade);
    }
}

الترتيب مهم

تُختبر الشروط من الأعلى إلى الأسفل، لذا ضع الشرط الأكثر تخصيصًا أو النطاق الأعلى أولًا.

إذا تحققت من score >= 70 قبل score >= 90، فسيتوقف الرقم 95 خطأً عند المطابقة الأولى.

// wrong order: 95 would match >= 70 first
int score = 95;
String g = score >= 70 ? "C" : score >= 90 ? "A" : "F"; // g = "C"!

إضافة الأقواس من أجل الوضوح

لا تتطلب Java الأقواس، لكنها تجعل التداخل واضحًا للقرّاء.

يوضّح وضع كل معامل ثلاثي داخلي بين قوسين كيفية اقتران الفروع تمامًا.

int n = 5;
String s = n < 0 ? "neg" : (n == 0 ? "zero" : "pos");

التنسيق عبر أسطر متعددة

تُقرأ السلاسل الطويلة بشكل أفضل عندما يكون كل شرط في سطر خاص به.

حاذِ الرمزين ? و: بحيث يبدو الهيكل كسُلّم.

public class Main {
    public static void main(String[] args) {
        int temp = 22;
        String label = temp >= 30 ? "hot"
            : temp >= 20 ? "warm"
            : temp >= 10 ? "cool"
            : "cold";
        System.out.println(label);
    }
}

التداخل في الفرع الصحيح

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

عند القيام بذلك، يُنصح بشدة باستخدام الأقواس لتجنّب الالتباس.

boolean a = true, b = false;
String r = a ? (b ? "both" : "only a") : "neither";

إرجاع معامل ثلاثي متداخل

يمكن للدالة إرجاع نتيجة متعددة الخيارات باستخدام معامل ثلاثي متداخل واحد.

يبقى هذا مقروءًا عند التعامل مع ثلاث أو أربع حالات، لكنه يصبح فوضويًا عند تجاوز ذلك.

public class Main {
    static String size(int len) {
        return len < 5 ? "short" : len < 10 ? "medium" : "long";
    }
    public static void main(String[] args) {
        System.out.println(size(7));
    }
}

اعرف متى تتوقف

يكون مستويان من التداخل مناسبين عادةً. أما ثلاثة مستويات أو أكثر فغالبًا ما تصبح صعبة المتابعة.

عندما تطول السلسلة، تكون بنية if/else if أو switch أوضح وأسهل في تصحيح الأخطاء.

تتبّع سلسلة

تتبّع هذه السلسلة يدويًا: عندما تكون قيمة day = 6، يكون الشرط الأول خاطئًا والثاني صحيحًا.

لذلك تكون النتيجة "Saturday" دون التحقق من بقية الشروط.

public class Main {
    public static void main(String[] args) {
        int day = 6;
        String name = day == 7 ? "Sunday"
            : day == 6 ? "Saturday" : "Weekday";
        System.out.println(name);
    }
}

تحقّق سريع

اختبر كيفية تجميع المعاملات الثلاثية المتداخلة.

مراجعة

تربط المعاملات الثلاثية المتداخلة الشروط لاختيار واحدة من ثلاث قيم أو أكثر.

وهي مرتبطة من اليمين، لذلك يضم الفرع الخاطئ بقية السلسلة؛ رتّب شروطك بعناية.

أضف الأقواس وفواصل الأسطر من أجل الوضوح، وانتقل إلى if/else عندما تطول السلاسل.

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

هل درس «تداخل المعاملات الثلاثية» مجاني؟

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

ماذا ستتعلم في «تداخل المعاملات الثلاثية»؟

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

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

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

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

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

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

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

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

  1. المعامل الثلاثي
  2. تداخل المعاملات الثلاثية
  3. المعامل الثلاثي مقابل if/else
  4. مشكلات قابلية القراءة
← العودة إلى Java Academy