ברוב שפות מחשב, המקרה או המותנה (ידוע גם בשם החלף) הצהרה משווה את הערך של משתנה לערך של מספר קבועים או ליטרלים ומבצעת את הנתיב הראשון עם מקרה תואם. בתוך רובי, זה קצת יותר גמיש (וחזק).
במקום לבצע מבחן שוויון פשוט, משתמשים במפעיל שוויון המקרים, ופותח את הדלת לשימושים רבים חדשים.
אולם ישנם כמה הבדלים משפות אחרות. בתוך ג, הצהרת מתג היא סוג של תחליף לסדרה של אם והולך הצהרות. המקרים הם תוויות טכניות, וכן החלפת הצהרה יעבור לתווית התואמת. זה מראה התנהגות שנקראת "פריצת דרך", מכיוון שהביצוע לא נפסק כשהוא מגיע לתווית אחרת.
בדרך כלל זה נמנע משימוש בהצהרת הפסקה, אך פריצת דרך היא לעיתים מכוונת. לעומת זאת, ניתן לראות את הצהרת המקרה ברובי כקצרה לסדרה של אם הצהרות. אין פריצת דרך, רק התיק המתאים הראשון יבוצע.
הצורה הבסיסית של הצהרת תיק
הצורה הבסיסית של הצהרת תיק היא כדלקמן.
כפי שאתה יכול לראות, זה מובנה בדומה לאמירה מותנית אם / אחרת אם / אחרת. השם (שנקרא לו ערך), במקרה זה שהוחדר מהמקלדת, משווים לכל אחד מהמקרים מה- מתי סעיפים (כלומר מקרים), והראשון כאשר החסימה עם תיק תואם תבוצע. אם אף אחד מהם לא תואם, ה- אחר הבלוק יבוצע.
מה שמעניין כאן הוא איך הערך מושווה לכל אחד מהמקרים. כאמור לעיל, ב C ++ושפות אחרות כמו C, משתמשים בהשוואה פשוטה בין ערכים. ברובי משתמשים במפעיל שוויון המקרים.
זכרו כי סוג הצד השמאלי של מפעיל שוויון תיקים חשוב, והתיקים הם תמיד הצד השמאלי. אז, לכל אחד מתי סעיף, רובי יעריך ערך מקרה עד שזה ימצא שידוך.
אם היינו מכניסים בוב, רובי היה מעריך תחילה "אליס" "בוב"אשר יהיה מזויף מאז מחרוזת # מוגדר כהשוואה בין המיתרים. הבא, /vudqrzachte.+/i "בוב" יבוצע, וזה מזויף מאז בוב לא מתחיל עם Q, R או Z.
מכיוון שאף אחד מהמקרים לא התאים, רובי לאחר מכן יבצע את סעיף השאר.
איך הטיפוס נכנס למשחק
שימוש נפוץ בהצהרת המקרה הוא לקבוע את סוג הערך ולעשות משהו שונה בהתאם לסוגו. למרות שזה מפר את הקלדת הברווז המקובלת של רובי, לפעמים יש צורך לעשות דברים.
זה עובד באמצעות מעמד# (מבחינה טכנית, מודול מספר) מפעיל, שבודק אם הצד הימני הוא? צד שמאל.
התחביר פשוט ואלגנטי:
צורה אפשרית אחרת
אם ערך מושמט, הצהרת המקרה עובדת קצת אחרת: היא עובדת כמעט בדיוק כמו הצהרה אם / אחרת אם / אחרת. היתרונות בשימוש בהצהרת המקרה על פניאם הצהרה, במקרה זה, אינה אלא קוסמטית.
תחביר קומפקטי יותר
יש זמנים שיש מספר גדול של קטן מתי סעיפים. הצהרת מקרה כזו גדלה בקלות גדולה מכדי שתתאים למסך. כאשר זהו המקרה (אין הכוונה למשחק), אתה יכול להשתמש ב- לאחר מכן מילת המפתח לשים את גוף ה- מתי סעיף באותו קו.
אמנם זה מאפשר קוד צפוף מאוד, כל עוד כל אחד מהם מתי הסעיף דומה מאוד, הוא הופך למעשה יותר קריא.
כשאתה צריך להשתמש בשורה אחת ורב-קו כאשר סעיפים עומדים בך, זה עניין של סגנון. עם זאת, לא מומלץ לערבב את השניים - הצהרת מקרה צריכה להיות בהתאם לדפוס בכדי להיות קריא ככל האפשר.
הקצאת תיקים
כמו אם הצהרות, הצהרות המקרים מעריכים את ההצהרה האחרונה בסעיף מתי סעיף. במילים אחרות, ניתן להשתמש בהן במשימות כדי לספק סוג של טבלה. עם זאת, אל תשכח כי הצהרות המקרה הן הרבה יותר חזקות ממספר פשוט או בדיקת חשיש. טבלה כזו אינה בהכרח צריכה להשתמש באותיות קטנות מתי סעיפים.
אם אין התאמה מתי סעיף ולא סעיף אחר, אז הערכת התיק תעריך עד אפס.