5.2 KiB
title | localeTitle |
---|---|
Selecting from Many Options with Switch Statements | اختيار من العديد من الخيارات مع تبديل البيانات |
اختيار من العديد من الخيارات مع تبديل البيانات
إذا كان لديك العديد من الخيارات للاختيار من بينها ، فاستخدم عبارة switch
. يختبر بيان switch
قيمة ويمكن أن يحتوي على العديد من عبارات case
التي تحدد القيم المحتملة المختلفة. يتم تنفيذ البيانات من قيمة case
الأولى المتطابقة حتى تتم مواجهة break
.
في ما يلي مثال pseudocode:
switch(num) { case value1: statement1; break; case value2: statement2; break; ... case valueN: statementN; break; }
أكثر قليلا من الشرح
يقوم بيان التبديل أولاً بتقييم التعبير الخاص به. ثم يبحث عن جملة case
الأولى التي يتم تقييم التعبير لها بنفس القيمة الناتجة عن تعبير الإدخال (باستخدام المقارنة الصارمة ، ( ===
) وينقل التحكم إلى ذلك البند ، تنفيذ العبارات المرتبطة. (إذا كانت هناك حالات متعددة تتطابق القيمة المقدمة ، يتم تحديد الحالة الأولى المطابقة ، حتى إذا كانت الحالات لا تساوي بعضها البعض.)
إذا لم يتم العثور على فقرة case
مطابقة ، يبحث البرنامج عن جملة default
اختيارية ، وإذا تم العثور عليه ، ينقل التحكّم إلى هذا البند ، وينفذ البيانات المرتبطة. إذا لم يتم العثور على جملة default
، يتابع البرنامج التنفيذ في البيان التالي لنهاية switch
. حسب الاصطلاح ، فإن الجملة default
هي الجملة الأخيرة ، ولكنها لا تحتاج إلى أن تكون كذلك.
يضمن بيان break
الاختياري المرتبط بكل ملصق حالة أن البرنامج يخرج من المفتاح بمجرد تنفيذ البيان المطابق ومواصلة التنفيذ في البيان التالي للتبديل. إذا تم حذف break
، يستمر البرنامج في التنفيذ في العبارة التالية في عبارة switch
. 1
شرح المشكلة:
اكتب عبارة التبديل التي تختبر val
answer
عن الشروط التالية:
1
- "ألفا" ،2
- "beta" ،3
- "جاما" ،4
- "دلتا".
تلميح 1
تذكر أن قيم case
يتم اختبارها بالمساواة الصارمة ( ===
).
حاول حل المشكلة الآن!
تلميح 2
لا تشاهد "الشروط التالية" كقائمة مرتبة كما تبدو في العرض التوضيحي freeCodeCamp الأصلي ، ولكن كقيم وعبارات ، كما هو موضح هنا
حاول حل المشكلة الآن!
تنبيه المفسد!
هل أنت متأكد تماما ما تريد نظرة؟ ...
حل الرمز الأساسي
`function caseInSwitch(val) { var answer = ""; // Only change code below this line switch(val) { case 1: return "alpha"; break; case 2: return "beta"; break; case 3: return "gamma"; break; case 4: return "delta"; break; }
// Only change code above this line return answer; }
// Change this value to test caseInSwitch(1); `
شرح الشفرة
من الشائع تجاهل أن قيم case
يتم اختبارها بالمساواة الصارمة مع أي حاجة للتعبير الآخر ، مثل: case === value
حل رمز بديل:
function caseInSwitch(val) { var answer = ""; // Only change code below this line switch (val){ case 1: answer="alpha"; break; case 2: answer="beta"; break; case 3: answer="gamma"; break; case 4: answer="delta"; break; } // Only change code above this line return answer; } // Change this value to test caseInSwitch(1);
تشغيل الكود في repl.it.
تفسير الشفرة
نظرًا لأن لديك بالفعل متغيرًا محددًا في بداية الدالة المسمى answer
، ويتم تعريفه على أنه آخر كشف للإرجاع ، فيمكنك تعيين قيم جديدة له لكل حالة وسيقوم بإرجاع الإجابة المتوقعة استنادًا إلى القيمة التي تمررها إلى الوظيفة.