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.