Groovy def Kulcsszó
1. Áttekintés
Ebben a gyors bemutatóban felfedezzük a def kulcsszó Groovy-ban. Ez a dinamikus JVM nyelv opcionális gépelési funkciót biztosít.
2. A. Jelentése def Kulcsszó
A def kulcsszóval definiálhatunk egy be nem írt változót vagy egy függvényt a Groovy-ban, mivel ez opcionálisan beírt nyelv.
Ha nem vagyunk biztosak a változó vagy a mező típusában, használhatunk tőkeáttételt def hagyja, hogy Groovy futás közben döntsön a típusokról a hozzárendelt értékek alapján:
def firstName = "Samwell" def listOfCountries = ['USA', 'UK', 'FRANCE', 'INDIA']
Itt, keresztnév lesz a Húr, és listOfCountries lesz egy Tömb lista.
Használhatjuk a def kulcsszó a metódus visszatérési típusának meghatározásához:
def szorzás (x, y) {return x * y}
Itt, szaporodnak bármilyen típusú objektumot visszaadhat, attól függően, hogy milyen paramétereket adunk át neki.
3. def Változók
Értsük meg, hogyan def működik a változók számára.
Amikor használjuk def változó deklarálásához Groovy a-ként deklarálja NullObject és rendeljen hozzá egy nulla érték neki:
def list assert list.getClass () == org.codehaus.groovy.runtime.NullObject állítás list.is (null)
Abban a pillanatban, amikor értéket rendelünk a lista, Groovy a hozzárendelt érték alapján határozza meg a típusát:
list = [1,2,4] állítólista az ArrayList példányáról
Tegyük fel, hogy a változó típusunkat dinamikusnak akarjuk tartani, és egy hozzárendeléssel változtatni akarunk:
int rate = 20 rate = [12] // GroovyCastException rate = "nill" // GroovyCastException
Nem rendelhetünk hozzá Lista vagy Húr egy int tipizált változó, as ez futásidejű kivételt fog vetni.
Tehát ennek a problémának a leküzdéséhez és a Groovy dinamikus természetének megalapozásához a def kulcsszó:
def rate assert rate == null állítási ráta.getClass () == org.codehaus.groovy.runtime.NullObject rate = 12 állítási arány instanceof Integer rate = "Not Available" állítási arány instanceof String rate = [1, 4] érvényesítési arány Listof példánya
4. def Mód
A def kulcsszóval tovább definiálható a módszer dinamikus visszatérési típusa. Ez akkor hasznos, ha egy módszerhez különböző típusú visszatérési értékek lehetnek:
def divide (int x, int y) {if (y == 0) {return "Nem kéne osztani 0-val"} else {return x / y}} állítsd osztás (12, 3) példányát BigDecimal állítsd osztani (1, 0 ) karakterlánc példánya
Használhatjuk is def metódus definiálása kifejezett visszatérés nélkül:
def greetMsg () {println "Hello! Groovy vagyok"}
5. def vs. típus
Beszéljük meg a használatával kapcsolatos legjobb gyakorlatokat def.
Bár használhatjuk mindkettőt def és írja be együtt, miközben egy változót deklarál:
def int count assert count instanceof egész
A def kulcsszó felesleges lesz, ezért használnunk kell def vagy egy típus.
Ezenkívül meg kellene tennünk kerülje a használatát def be nem írt paraméterekhez egy módszerben.
Ezért ahelyett, hogy:
érvénytelen szorzás (def x, def y)
Előnyben kell részesítenünk:
érvénytelen szorzás (x, y)
Továbbá kellene kerülje a használatát def a kivitelezők meghatározásakor.
6. Groovy def vs. Java Tárgy
Amint láttuk a def kulcsszó és annak felhasználása példákon keresztül felmerülhet, hogy vajon hasonlít-e valamire a Tárgy osztály Java-ban. Igen, def hasonlónak tekinthető Tárgy:
def fullName = "Norman Lewis"
Hasonlóképpen használhatjuk Tárgy Java-ban:
Object fullName = "Norman Lewis";
7. def vs. @TypeChecked
Mivel sokan lennénk a szigorúan tipizált nyelvek világából, csodálkozhatunk hogyan lehet kényszeríteni a fordítási idejű típusellenőrzést Groovy-ban. Ezt könnyen elérhetjük a @TypeChecked annotáció.
Például használhatjuk @TypeChecked egy osztály felett, hogy lehetővé tegye az összes módszer és tulajdonság típusellenőrzését:
@TypeChecked class DefUnitTest kiterjeszti a GroovyTestCase {def szorzást (x, y) {return x * y} int divide (int x, int y) {return x / y}}
Itt a DefUnitTest osztály típusellenőrzésre kerül, és összeállítása meghiúsul a szaporodnak módszer bontatlan. A Groovy fordító hibát jelenít meg:
[Statikus típusellenőrzés] - Nem található megfelelő módszer java.lang.Object # szorzás (java.lang.Object). Kérjük, ellenőrizze, hogy a deklarált típus helyes-e, és hogy létezik-e a módszer.
Így, egy módszer figyelmen kívül hagyására használhatjuk TypeCheckingMode.SKIP:
@TypeChecked (TypeCheckingMode.SKIP) def szoroz (x, y)
8. Következtetés
Ebben a gyors oktatóanyagban láthattuk a def kulcsszó a Groovy nyelv dinamikus jellemzőjének meghívására, és arra, hogy ez futás közben meghatározza a változók és módszerek típusait.
Ez a kulcsszó hasznos lehet dinamikus és robusztus kód írásakor.
Szokás szerint az oktatóanyag kód implementációi elérhetők a GitHub projekten.