Erklæringer om destruktion i Kotlin

1. Oversigt

I denne vejledning introducerer vi begrebet Destructuring Declarations i Kotlin og ser på, hvordan det kan bruges.

Hvis du vil lære mere om Kotlin, skal du tjekke denne artikel.

2. Destruktureringserklæringer

Dette koncept består i at behandle objekter som et sæt separate variabler.

2.1. Objekter

Det kan være praktisk at destruere et objekt i flere variabler:

val person = Person (1, "Jon Snow", 20) val (id, navn, alder) = person 

Med dette har vi oprettet tre nye variabler:

println (id) // 1 println (navn) // Jon Snow println (alder) // 20 

En destruktureringserklæring udarbejdes som følgende kode:

val id = person.komponent1 (); val navn = person.komponent2 (); val alder = person.komponent3 ();

For at kunne bruge destruktureringserklæringen skal vi sikre os, at komponenten er markeret med operatør eller klassen er markeret med data nøgleord.

For mere om Dataklasser i Kotlin, glem ikke at tjekke det her artikel.

2.2. Returtyper

Destruktureringserklæringer kan også bruges, når der arbejdes med returværdier:

sjov getPersonInfo () = Person (2, "Ned Stark", 45) val (id, navn, alder) = getPersonInfo ()

Eller lad os sige, at vi skal returnere to værdier fra en funktion:

fun twoValuesReturn (): Pair {// ... returner Pair (1, "success")} val (resultat, status) = twoValuesReturn ()

2.3. Samlinger og For-loops

Gentag en samling med for-loops kan udføres med destruktureringserklæringer, som denne:

for ((a, b) i samlingen) {...} 

Variablerne -en og b tildeles værdier returneret af komponent1 () og komponent2 () metoder - som returnerer de første to elementer i en samling.

Imidlertid i en Kort, ville variablerne være nøgle og værdi, henholdsvis:

var map: HashMap = HashMap () map.put (1, person) for ((nøgle, værdi) på kort) {println ("Nøgle: $ nøgle, Værdi: $ værdi")}

2.4. Understregning og destruktion i Lambdas

Hvis vi ikke har brug for alle værdier opnået i en destruktureringserklæring, kan vi bruge understregning i stedet for variabelnavnet:

val (_, navn, alder) = person

Eller hvis der ikke er behov for felter i slutningen, kan vi overhovedet udelade dem:

val (id, navn) = person

Vi kan også bruge syntaks for destruktureringserklæringer til lambda-parametre, så længe det er en type med den relevante komponentN funktioner:

map.mapValues ​​{entry -> "$ {entry.value}!" } map.mapValues ​​{(nøgle, værdi) -> "$ værdi!" }

Vær opmærksom på forskellen mellem at erklære to parametre og at erklære et destruktureringspar:

{a -> ...} // en parameter {a, b -> ...} // to parametre {(a, b) -> ...} // et ødelagt par {(a, b), c -> ...} // et ødelagt par og en anden parameter

3. Konklusion

I denne hurtige artikel har vi nærmet Destructuring Declarations i Kotlin med sine mange anvendelsesmuligheder og særlige forhold.

Hvis du vil vide mere om Kotlin, skal du helt sikkert tjekke vores andre artikler som f.eks Oversigt over Kotlin Collections API og det allerede nævnte Dataklasser i Kotlin.

Og som altid kan den fulde implementering af disse eksempler findes i vores GitHub-projekt.


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