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.