Destruktureringserklæringer i Kotlin

1. Oversikt

I denne opplæringen vil vi introdusere konseptet med Destructuring Declarations i Kotlin, og se på hvordan det kan brukes.

Hvis du vil lære mer om Kotlin, kan du sjekke ut denne artikkelen.

2. Destruktureringserklæringer

Dette konseptet består i å behandle objekter som et sett med separate variabler.

2.1. Objekter

Å ødelegge et objekt i flere variabler kan være praktisk:

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

Med dette har vi opprettet tre nye variabler:

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

En destruktureringserklæring er samlet som følgende kode:

val id = person.komponent1 (); val name = person.component2 (); val alder = person.komponent3 ();

For å kunne bruke destruktureringserklæringen, må vi sørge for at komponenten er merket med operatør eller klassen er merket med data søkeord.

For mer informasjon Dataklasser i Kotlin, ikke glem å sjekke dette artikkel.

2.2. Returtyper

Destruktureringserklæringer kan også brukes når du arbeider med returverdier:

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

Eller la oss si at vi må returnere to verdier fra en funksjon:

morsom twoValuesReturn (): Pair {// ... return Pair (1, "suksess")} val (resultat, status) = twoValuesReturn ()

2.3. Samlinger og forløkker

Iterere en samling med for-loops kan gjøres med destruktureringserklæringer, slik:

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

Variablene en og b tildeles verdier returnert av komponent1 () og komponent2 () metoder - som returnerer de to første elementene i en samling.

Imidlertid i en Kart, ville variablene være nøkkel og verdi, henholdsvis:

var map: HashMap = HashMap () map.put (1, person) for ((nøkkel, verdi) i kart) {println ("Nøkkel: $ nøkkel, Verdi: $ verdi")}

2.4. Understrekning og destruksjon i Lambdas

Hvis vi ikke trenger alle verdiene som er oppnådd i en destruktureringserklæring, kan vi bruke understrek i stedet for variabelnavnet:

val (_, navn, alder) = person

Eller, hvis ikke nødvendige felt er på slutten, kan vi i det hele tatt utelate dem:

val (id, navn) = person

Vi kan også bruke syntaks for destruktureringserklæringer for lambda-parametere, så lenge det er en type med passende komponentN funksjoner:

map.mapValues ​​{entry -> "$ {entry.value}!" } map.mapValues ​​{(nøkkel, verdi) -> "$ verdi!" }

Vær oppmerksom på forskjellen mellom å erklære to parametere og å erklære et destruktureringspar:

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

3. Konklusjon

I denne raske artikkelen har vi nærmet oss Destructuring Declarations in Kotlin, med sine mange bruksområder og særegenheter.

For å lære mer om Kotlin, definitivt, sjekk ut våre andre artikler som Oversikt over Kotlin Collections API og det allerede nevnte Dataklasser i Kotlin.

Og som alltid finner du full implementering av disse eksemplene i vårt GitHub-prosjekt.


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