מפעיל טרינירי בג'אווה

1. סקירה כללית

המפעיל המותנה שלישית ?: מאפשר לנו להגדיר ביטויים ב- Java. זו צורה מרוכזת של אחרת משפט שמחזיר גם ערך.

במדריך זה נלמד מתי וכיצד להשתמש במבנה שלישוני. נתחיל בבדיקת התחביר שלו ואחריו בחינת השימוש בו.

2. תחביר

המפעיל השלילי ?: בג'אווה הוא המפעיל היחיד שמקבל שלושה אופרנדים:

ביטוי בוליאני? ביטוי 1: ביטוי 2

האופראנד הראשון חייב להיות א בוליאני ביטוי, האופרנד השני והשלישי יכול להיות כל ביטוי שמחזיר ערך כלשהו. המבנה הטריני חוזר ביטוי 1 כפלט אם האופרנד הראשון מוערך ל נָכוֹן, ביטוי 2 אחרת.

3. דוגמה למפעיל טרנרי

בואו ניקח בחשבון את הדברים הבאים אחרת לִבנוֹת:

int מספר = 8; מחרוזת msg = ""; אם (num> 10) {msg = "המספר גדול מ- 10"; } אחר {msg = "המספר קטן או שווה ל -10"; }

בקוד לעיל, הקצנו ערך ל- הודעה בהתבסס על הערכה מותנית של מספר. אנו יכולים להפוך קוד זה לקריא ובטוח יותר על ידי החלפת ה- אחרת הצהרה עם קונסטרוקציה שלישית:

מחרוזת סופית msg = num> 10? "המספר גדול מ -10": "המספר קטן או שווה ל- 10";

4. הערכת ביטוי

בעת שימוש במבנה טריני של ג'אווה, רק אחד מהביטויים בצד ימין כלומר אחד מהם ביטוי 1 אוֹ ביטוי 2 מוערך בזמן הריצה.

אנו יכולים לבדוק זאת על ידי כתיבת פשוט JUnit מקרה מבחן:

@Test ציבורי בטל כאשרConditionIsTrue_thenOnlyFirstExpressionIsEvaluated () {int exp1 = 0, exp2 = 0; תוצאה int = 12> 10? ++ exp1: ++ exp2; assertThat (exp1) .isEqualTo (1); assertThat (exp2) .isEqualTo (0); assertThat (תוצאה). isEqualTo (1); }

שֶׁלָנוּ בוליאני ביטוי 12 > 10 תמיד מעריך ל נָכוֹן, כך הערך של exp2 נשאר כמו שהוא. באופן דומה, בואו ניקח בחשבון מה קורה עבור a שֶׁקֶר מַצָב:

@Test ציבורי בטל כאשרConditionIsFalse_thenOnlySecondExpressionIsEvaluated () {int exp1 = 0, exp2 = 0; תוצאת int = 8> 10? ++ exp1: ++ exp2; assertThat (exp1) .isEqualTo (0); assertThat (exp2) .isEqualTo (1); assertThat (תוצאה). isEqualTo (1); }

הערך של exp1 נשאר ללא פגע, והערך של exp2 הוגדל על ידי 1.

5. קינון מפעיל טרינירי

זה אפשרי עבורנו לקנן את המפעיל הטריני שלנו לכל מספר רמות שבחרנו. אז הקונסטרוקציה:

מחרוזת msg = num> 10? "המספר גדול מ -10": מספר> 5? "המספר גדול מ- 5": "המספר קטן משווה ל- 5";

תקף ב- Java. כדי לשפר את הקריאות של הקוד הנ"ל, אנו יכולים להשתמש בסוגרים (), בכל מקום שצריך:

מחרוזת msg = num> 10? "המספר גדול מ- 10": (מספר> 5? "המספר גדול מ- 5": "המספר פחות משווה ל- 5");

למרות זאת, לידיעתך, לא מומלץ להשתמש במבנים טרניים מקוננים כל כך בעולם האמיתי. זאת מכיוון שהוא הופך את הקוד לקריא פחות וקשה לתחזוקה.

6. מסקנה

במדריך מהיר זה למדנו על המפעיל הכללי בג'אווה. לא ניתן להחליף כל אחד מהם אחרת לבנות עם מפעיל שלישית. עם זאת, זה כלי נהדר עבור מקרים מסוימים והופך את הקוד שלנו לקצר וקריא בהרבה.

כרגיל, קוד המקור כולו זמין ב- Github.