Ključna riječ Groovy def

1. Pregled

U ovom brzom vodiču istražit ćemo koncept def ključna riječ u Groovyju. Pruža opcionalnu značajku tipkanja za ovaj dinamični JVM jezik.

2. Značenje def Ključna riječ

The def Ključna riječ koristi se za definiranje netipizirane varijable ili funkcije u Groovyju, jer je to neobavezna vrsta jezika.

Kad nismo sigurni u vrstu varijable ili polja, možemo iskoristiti to def dopustiti Groovyju da tijekom izvođenja odlučuje o vrstama na temelju dodijeljenih vrijednosti:

def firstName = "Samwell" def listOfCountries = ['USA', 'UK', 'FRANCE', 'INDIA'] 

Ovdje, ime bit će a Niz, i listOfCountries bit će an ArrayList.

Također možemo koristiti def ključna riječ za definiranje vrste povrata metode:

def multiply (x, y) {return x * y}

Ovdje, pomnožiti može vratiti bilo koju vrstu objekta, ovisno o parametrima koje mu prosljeđujemo.

3. def Varijable

Da shvatimo kako def radi za varijable.

Kad koristimo def da bi proglasio varijablu, Groovy je deklarira kao NullObject i dodijeliti a null vrijednost za to:

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

U trenutku kada dodijelimo vrijednost popis, Groovy definira svoj tip na temelju dodijeljene vrijednosti:

list = [1,2,4] potvrditi popis primjeraka ArrayList 

Recimo da želimo imati svoj varijabilni tip dinamički i mijenjati se s dodjelom:

int stopa = 20 stopa = [12] // GroovyCastException stopa = "nill" // GroovyCastException

Ne možemo dodijeliti Popis ili Niz do an int upisana varijabla, kao ovo će izbaciti runtime iznimku.

Dakle, da bismo prevladali ovaj problem i pozvali se na dinamičnu prirodu Groovyja, koristit ćemo def ključna riječ:

def rate utvrditi stopa == null assert rate.getClass () == org.codehaus.groovy.runtime.NullObject rate = 12 izjaviti stopa instanceof Integer rate = "Nije dostupno" izuzeti stopa rateof String rate = [1, 4] stopa ustupanja primjer Popisa

4. def Metode

The def ključna riječ se dalje koristi za definiranje dinamičkog tipa povrata metode. To je zgodno kada za metodu možemo imati različite vrste povratnih vrijednosti:

def split (int x, int y) {if (y == 0) {return "Ne bi se trebalo dijeliti s 0"} else {return x / y}} potvrditi divide (12, 3) instanceof BigDecimal tvrditi podijeliti (1, 0 ) instanceof String

Možemo i koristiti def za definiranje metode bez eksplicitnih povrata:

def greetMsg () {println "Pozdrav! Ja sam Groovy"}

5. def nasuprot tipu

Razmotrimo neke od najboljih praksi vezanih uz upotrebu def.

Iako se možda koristimo i jednim i drugim def i upišite zajedno dok deklarirate varijablu:

def int count ustvrditi count instanceof Integer

The def ključna riječ tamo će biti suvišna, pa bismo trebali koristiti bilo koji def ili tip.

Uz to bismo trebali izbjegavajte koristiti def za netipkane parametre u metodi.

Stoga, umjesto:

množenje praznina (def x, def y)

Trebali bismo preferirati:

množenje praznina (x, y)

Nadalje, trebali bismo izbjegavajte koristiti def prilikom definiranja konstruktora.

6. Groovy def naspram Jave Objekt

Kao što smo vidjeli većinu značajki def Ključna riječ i njezina upotreba kroz primjere, mogli bismo se zapitati je li slično prijavljivanju nečega pomoću Objekt razred u Javi. Da, def može se smatrati sličnim Objekt:

def fullName = "Norman Lewis"

Slično tome, možemo koristiti Objekt na Javi:

Objekt fullName = "Norman Lewis";

7. def nasuprot @TypeChecked

Kao što bi mnogi od nas bili iz svijeta strogo otkucanih jezika, možemo se zapitati kako prisiliti provjeru vremena kompajliranja u Groovyu. To možemo lako postići pomoću @TypeChecked bilješka.

Na primjer, možemo koristiti @TypeChecked preko klase kako bi se omogućila provjera tipa za sve njene metode i svojstva:

@TypeChecked klasa DefUnitTest proširuje GroovyTestCase {def multiply (x, y) {return x * y} int split (int x, int y) {return x / y}}

Evo, DefUnitTest klasa će biti provjerena, i kompilacija neće uspjeti zbog pomnožiti metoda je netipizirana. Kompajler Groovy prikazat će pogrešku:

[Provjera statičkog tipa] - Ne mogu pronaći odgovarajuću metodu java.lang.Object # multiply (java.lang.Object). Molimo provjerite je li deklarirani tip točan i postoji li metoda.

Tako, da zanemarimo metodu, možemo se poslužiti TypeCheckingMode.SKIP:

@TypeChecked (TypeCheckingMode.SKIP) def multiply (x, y)

8. Zaključak

U ovom smo brzom vodiču vidjeli kako se koristi def ključna riječ za pozivanje dinamičke značajke jezika Groovy i određivanje vrsta varijabli i metoda tijekom izvođenja.

Ova ključna riječ može biti korisna za pisanje dinamičnog i robusnog koda.

Kao i obično, implementacije koda ovog vodiča dostupne su na projektu GitHub.