Groovy def Nøkkelord

1. Oversikt

I denne raske opplæringen vil vi utforske begrepet def nøkkelord i Groovy. Det gir en valgfri skrivefunksjon til dette dynamiske JVM-språket.

2. Betydningen av def Nøkkelord

De def nøkkelord brukes til å definere en utypet variabel eller en funksjon i Groovy, da det er et valgfritt språk.

Når vi er usikre på typen variabel eller felt, kan vi utnytte def å la Groovy bestemme typer på kjøretid basert på de tildelte verdiene:

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

Her, fornavn vil være en String, og listOfCountries vil være en ArrayList.

Vi kan også bruke def nøkkelord for å definere returtypen til en metode:

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

Her, multiplisere kan returnere alle typer objekter, avhengig av parametrene vi sender til den.

3. def Variabler

La oss forstå hvordan def fungerer for variabler.

Når vi bruker def å erklære en variabel, erklærer Groovy det som en NullObject og tilordne en null verdi for det:

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

Øyeblikket vi tildeler en verdi til liste, Groovy definerer sin type basert på den tildelte verdien:

list = [1,2,4] assert list instanceof ArrayList 

La oss si at vi vil ha dynamisk variabel og endre med en oppgave:

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

Vi kan ikke tildele Liste eller String til en int skrevet variabel, som Dette vil gi et unntak for kjøretid.

Så, for å overvinne dette problemet og påkalle Groovys dynamiske natur, bruker vi def nøkkelord:

def rate assert rate == null assert rate.getClass () == org.codehaus.groovy.runtime.NullObject rate = 12 assert rate rate of Integer rate = "Not Available" assert rate rate of String rate = [1, 4] assert rate forekomst av Liste

4. def Metoder

De def nøkkelord brukes videre til å definere den dynamiske returtypen til en metode. Dette er praktisk når vi kan ha forskjellige typer returverdier for en metode:

def divide (int x, int y) {if (y == 0) {return "Bør ikke dele med 0"} ellers {return x / y}} assert divide (12, 3) forekomst av BigDecimal assert divide (1, 0 ) forekomst av streng

Vi kan også bruke def for å definere en metode uten eksplisitt avkastning:

def greetMsg () {println "Hei! Jeg er groovy"}

5. def mot type

La oss diskutere noen av de beste metodene rundt bruken av def.

Selv om vi kanskje bruker begge deler def og skriv sammen mens du erklærer en variabel:

def int count assert count instanceof Integer

De def nøkkelord vil være overflødig der, så vi bør bruke begge def eller en type.

I tillegg burde vi unngå å bruke def for utypede parametere i en metode.

Derfor, i stedet for:

ugyldig multiplisere (def x, def y)

Vi bør foretrekke:

ugyldig multiplisere (x, y)

Videre burde vi unngå å bruke def når man definerer konstruktører.

6. Groovy def mot Java Gjenstand

Som vi har sett de fleste funksjonene i def nøkkelord og dets bruk gjennom eksempler, kan vi lure på om det ligner på å erklære noe ved hjelp av Gjenstand klasse i Java. Ja, def kan betraktes som lik Gjenstand:

def fullName = "Norman Lewis"

På samme måte kan vi bruke Gjenstand i Java:

Objekt fullName = "Norman Lewis";

7. def vs. @TypeChecked

Som mange av oss ville komme fra en verden med strengt typte språk, kan vi lure på hvordan du kan tvinge kompileringstidskontroll i Groovy. Vi kan enkelt oppnå dette ved hjelp av @TypeChecked kommentar.

For eksempel kan vi bruke @TypeChecked over en klasse for å aktivere typekontroll for alle metodene og egenskapene:

@TypeChecked klasse DefUnitTest utvider GroovyTestCase {def multiplisere (x, y) {return x * y} int divide (int x, int y) {return x / y}}

Her, den DefUnitTest klasse vil være typekontrollert, og kompilering mislykkes på grunn av multiplisere metoden blir utypet. Groovy-kompilatoren viser en feil:

[Kontroll av statisk type] - Finner ikke samsvarende metode java.lang.Object # multiply (java.lang.Object). Kontroller om den oppgitte typen er riktig, og om metoden eksisterer.

Så, for å ignorere en metode, kan vi bruke TypeCheckingMode.SKIP:

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

8. Konklusjon

I denne raske opplæringen har vi sett hvordan du bruker def nøkkelord for å påkalle den dynamiske funksjonen i Groovy-språket og få det til å bestemme hvilke typer variabler og metoder som kjøres.

Dette nøkkelordet kan være praktisk når du skriver dynamisk og robust kode.

Som vanlig er kodeimplementeringene av denne opplæringen tilgjengelig på GitHub-prosjektet.


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