מפעיל מותנה תורני של קוטלין

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

בקצרה, יש אין מפעיל שלישוני בקוטלין. עם זאת, שימוש אם ו מתי ביטויים עוזרים למלא פער זה.

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

2. אם ו מתי ביטויים

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

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

2.1. שימוש ב- if-else

בואו נסתכל על השימוש ב- אם ביטוי לחיקוי המפעיל השלילי:

תוצאת val = אם (א) "כן" אחרת "לא"

בביטוי הנ"ל, אם א נקבע ל נָכוֹן, שלנו תוֹצָאָה משתנה מוגדר ל כן. אחרת, הוא מוגדר ל לא.

ראוי לציין זאת סוג התוצאה תלוי בביטוי בצד ימין. באופן כללי, הסוג הוא כל. למשל, אם בצד ימין יש בוליאני סוג, התוצאה תהיה בוליאני גם כן:

תוצאת val: בוליאנית = אם (a == b) נכון אחרת שקר

2.2. באמצעות מתי

אנו יכולים גם להשתמש ב- מתי ביטוי ליצירת מפעיל פסאודו-טריני:

val result = when (a) {true -> "yes" false -> "no"}

הקוד פשוט, פשוט וקל לקריאה. אם א הוא נָכוֹן, הקצה את תוֹצָאָה להיות כן. אחרת, הקצה את זה ל לא.

2.3. מפעיל אלביס

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

val a: מחרוזת? = null val result = if (a! = null) אחר "ברירת מחדל"

אפשר לעשות את אותו הדבר גם עם מתי ביטויים:

val result = when (a) {null -> "Default" אחר -> a}

מכיוון שמדובר בתבנית שכיחה כל כך, לקוטלין יש מפעיל מיוחד בשבילה:

val result = a?: "ברירת מחדל"

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

2.4. DSL

בהחלט יש פיתוי ליצור DSL המדמה מפעיל שלישוני. עם זאת, מגבלות השפה של קוטלין חזקות מכדי לאפשר העתקה של 100% של התחביר המסורתי.

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

3. מסקנה

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

כמו תמיד, הקוד זמין ב- GitHub.


$config[zx-auto] not found$config[zx-overlay] not found