מפעיל מותנה תורני של קוטלין
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.