עבודה עם Enums בקוטלין

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

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

עם התפתחותן של שפות התכנות, השימוש והיישום של enums התקדמו גם הם.

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

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

2. Enums בסיסי של קוטלין

בואו נסתכל על יסודות האנומות בקוטלין.

2.1. הגדרת Enums

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

class כרטיס מסוג enum {SILVER, GOLD, PLATINUM}

2.2. אתחול קבועי Enum

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

בואו נציין ערכי צבע לסוגי כרטיסים שונים:

enum class CardType (צבע val: מחרוזת) {SILVER ("אפור"), GOLD ("צהוב"), PLATINUM ("שחור")}

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

צבע צבע = CardType.SILVER.color

3. קבועי Enum ככיתות אנונימיות

אנו יכולים להגדיר התנהגות קבועה של enum על ידי יצירתם ככיתות אנונימיות. קבועים צריכים אז לבטל את הפונקציות המופשטות המוגדרות בתוך ה- Enum הַגדָרָה.

לדוגמה, עבור כל סוג כרטיס, ייתכן שיהיה לנו חישוב החזר כספי שונה.

בואו נראה איך נוכל ליישם את זה:

מחלקת enum CardType {SILVER {override fun calcCashbackPercent () = 0.25f}, GOLD {override fun calcCashbackPercent () = 0.5f}, PLATINUM {override fun calcCashbackPercent () = 0.75f}; מופשט כיף calcCashbackPercent (): Float}

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

val cashbackPercent = CardType.SILVER.calculateCashbackPercent ()

4. Enums יישום ממשקים

בוא נגיד שיש ICardLimit ממשק המגדיר את מגבלות הכרטיסים של סוגי כרטיסים שונים:

ממשק ICardLimit {fun getCreditLimit (): Int}

עכשיו, בואו נראה כיצד האנום שלנו יכול ליישם ממשק זה:

enum class CardType: ICardLimit {SILVER {לעקוף כיף getCreditLimit () = 100000}, GOLD {לעקוף כיף getCreditLimit () = 200000}, PLATINUM {לעקוף כיף getCreditLimit () = 300000}}

כדי לגשת למגבלת האשראי של סוג כרטיס, נוכל להשתמש באותה גישה כמו בדוגמה הקודמת:

val creditLimit = CardType.PLATINUM.getCreditLimit ()

5. Enum בונה משותף

5.1. קבלת קבועי Enum לפי שם

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

val cardType = CardType.valueOf (name.toUpperCase ())

5.2. מחזיר דרך קבועי Enum

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

עבור (cardType ב- CardType.values ​​()) {println (cardType.color)}

5.3. שיטות סטטיות

כדי להוסיף פונקציה "סטטית" ל- enum, נוכל להשתמש ב- אובייקט נלווה:

אובייקט נלווה {fun getCardTypeByName (name: String) = valueOf (name.toUpperCase ())}

כעת אנו יכולים להפעיל פונקציה זו באמצעות:

val cardType = CardType.getCardTypeByName ("SILVER")

שימו לב שלקוטלין אין מושג סטָטִי שיטות. מה הראינו כאן דרך להשיג את אותה פונקציונליות כמו ב- Java, אך באמצעות התכונות של Kotlin.

6. מסקנה

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

הצגנו כמה מושגים פשוטים כמו הגדרת enums ואתחול הקבועים. הראינו גם כמה תכונות מתקדמות כמו הגדרת קבועי enum ככיתות אנונימיות, ו- enums ליישום ממשקים.

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


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