Groovy def מילת מפתח

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

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

2. משמעות ה def מילת מפתח

ה def מילת המפתח משמשת להגדרת משתנה לא מקליד או פונקציה ב- Groovy, מכיוון שהיא שפה שהוקלדה באופן אופציונלי.

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

def firstName = "Samwell" def listOfCountries = ['ארה"ב', 'בריטניה', 'צרפת', 'הודו'] 

פה, שם פרטי יהיה חוּט, ו listOfCountries יהיה רשימת מערך.

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

def הכפל (x, y) {החזר x * y}

פה, לְהַכפִּיל יכול להחזיר כל סוג של אובייקט, תלוי בפרמטרים שאנו מעבירים אליו.

3. def משתנים

בואו נבין איך def עובד למשתנים.

כשאנחנו משתמשים def כדי להכריז על משתנה, גרובי מכריז עליו כ- NullObject ולהקצות א ריק ערך לזה:

def list assert list.getClass () == org.codehaus.groovy.runtime.NullObject assert list.is (null) 

הרגע בו אנו מקצים ערך ל- רשימה, Groovy מגדיר את סוגו על פי הערך שהוקצה:

רשימה = [1,2,4] מופע רשימה של ArrayList 

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

קצב int = 20 rate = [12] // GroovyCastException rate = "nill" // GroovyCastException

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

לכן, כדי להתגבר על בעיה זו ולהפעיל את האופי הדינמי של גרובי, נשתמש ב- def מילת מפתח:

שיעור קצב קביעת קצב == null קצב קצב. getClass () == org.codehaus.groovy.runtime.NullObject rate = 12 שיעור קצב של שיעור שלם = "לא זמין" מופע של קצב קצב של מחרוזת = [1, 4] קצב טענות מופע של רשימה

4. def שיטות

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

def divide (int x, int y) {if (y == 0) {return "Should not divide by 0"} else {return x / y}} assert divide (12, 3) instance of BigDecimal assert divide (1, 0 ) מופע של מחרוזת

אנחנו יכולים גם להשתמש def להגדרת שיטה ללא החזרות מפורשות:

def greetMsg () {println "שלום! אני גרובי"}

5. def לעומת סוג

בואו נדון בכמה מהשיטות המומלצות סביב השימוש ב- def.

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

def int count assert count count of Integral

ה def מילת המפתח תהיה מיותרת שם, ולכן עלינו להשתמש באחת מהן def או סוג.

בנוסף, עלינו לעשות זאת להימנע מלהשתמש def לפרמטרים לא מוקלטים בשיטה.

לכן, במקום:

להכפיל את החלל (def x, def y)

עלינו להעדיף:

הכפל בטל (x, y)

יתר על כן, עלינו לעשות זאת להימנע מלהשתמש def כאשר מגדירים קונסטרוקטורים.

6. גרובי def לעומת ג'אווה לְהִתְנַגֵד

כפי שראינו רוב התכונות של def מילת המפתח והשימוש בה באמצעות דוגמאות, אנו עשויים לתהות אם היא דומה להכריז על משהו באמצעות לְהִתְנַגֵד בכיתה בג'אווה. כן, def יכול להיחשב דומה ל- לְהִתְנַגֵד:

def fullName = "נורמן לואיס"

באופן דומה, אנו יכולים להשתמש לְהִתְנַגֵד בג'אווה:

אובייקט fullName = "נורמן לואיס";

7. def לעומת. @TypeChecked

כפי שרבים מאיתנו יהיו מעולם השפות המוקפדות בקפידה, אנו עשויים לתהות כיצד לאלץ בדיקת סוג זמן הידור בגרובי. אנו יכולים להשיג זאת בקלות באמצעות @TypeChecked ביאור.

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

מחלקה @ TypeChecked DefUnitTest מרחיב GroovyTestCase {def הכפל (x, y) {להחזיר x * y} לחלק int (int x, int y) {להחזיר x / y}}

הנה ה DefUnitTest הכיתה תיבדק בסוג, ו ההידור ייכשל עקב לְהַכפִּיל השיטה לא מוקלדת. מהדר גרובי יציג שגיאה:

[בדיקת סוג סטטי] - לא ניתן למצוא שיטת התאמה java.lang.Object # הכפל (java.lang.Object). אנא בדוק אם הסוג המוצהר נכון והאם השיטה קיימת.

כך, כדי להתעלם משיטה, נוכל להשתמש בה TypeCheckingMode.SKIP:

הכפלת @TypeChecked (TypeCheckingMode.SKIP) (x, y)

8. מסקנה

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

מילת מפתח זו יכולה להיות שימושית בכתיבת קוד דינמי וחזק.

כרגיל, יישומי הקוד של הדרכה זו זמינים בפרויקט GitHub.


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