Deklaracije o destrukturiranju u Kotlinu

1. Pregled

U ovom uputstvu predstavit ćemo koncept destrukturiranja deklaracija u Kotlinu i pogledati kako se on može koristiti.

Ako želite saznati više o Kotlinu, pogledajte ovaj članak.

2. Deklaracije o destrukturiranju

Ovaj se koncept sastoji od tretiranja objekata kao skupa zasebnih varijabli.

2.1. Predmeti

Destrukturiranje objekta u više varijabli može biti prikladno:

val osoba = Osoba (1, "Jon Snow", 20) val (id, ime, dob) = osoba 

Ovim smo stvorili tri nove varijable:

println (id) // 1 println (ime) // Jon Snow println (dob) // 20 

Izjava o destrukturiranju sastavlja se kao sljedeći kod:

val id = person.component1 (); val ime = person.component2 (); val dob = osoba.component3 ();

Da bismo koristili deklaraciju destrukturiranja, moramo biti sigurni da je komponenta označena znakom operater ili je razred označen znakom podaci ključne riječi.

Više o tome Klase podataka u Kotlinu, ne zaboravite provjeriti ovaj članak.

2.2. Vrste povratka

Deklaracije o destrukturiranju mogu se koristiti i pri radu s povratnim vrijednostima:

zabava getPersonInfo () = Osoba (2, "Ned Stark", 45) val (id, ime, dob) = getPersonInfo ()

Ili recimo da iz funkcije moramo vratiti dvije vrijednosti:

zabava twoValuesReturn (): Pair {// ... return Pair (1, "success")} val (rezultat, status) = twoValuesReturn ()

2.3. Zbirke i for-petlje

Ponavljanje kolekcije for-petljama može se izvršiti deklaracijom destrukturiranja, poput ove:

za ((a, b) u kolekciji) {...} 

Varijable a i b dodijeljene su vrijednosti koje je vratio komponenta1 () i komponenta2 () metode - koje vraćaju prva dva elementa u zbirci.

Međutim, u a Karta, varijable bi bile ključ i vrijednost, odnosno:

var karta: HashMap = HashMap () map.put (1, osoba) za ((ključ, vrijednost) na mapi) {println ("Ključ: $ ključ, Vrijednost: $ vrijednost")}

2.4. Podvlačenje i destrukturiranje u Lambdasu

U slučaju da nam ne trebaju sve vrijednosti dobivene u deklaraciji destrukturiranja, umjesto naziva varijable možemo koristiti donju crtu:

val (_, ime, dob) = osoba

Ili, ako nisu potrebna polja na kraju, možemo ih uopće izostaviti:

val (id, ime) = osoba

Sintaksu deklaracije destrukturiranja možemo koristiti i za lambda parametre, pod uvjetom da je riječ o tipu s odgovarajućim komponentaN funkcije:

map.mapValues ​​{entry -> "$ {entry.value}!" } map.mapValues ​​{(ključ, vrijednost) -> "$ vrijednost!" }

Budite svjesni razlike između deklariranja dva parametra i deklariranja para destrukturiranja:

{a -> ...} // jedan parametar {a, b -> ...} // dva parametra {(a, b) -> ...} // destrukturirani par {(a, b), c -> ...} // destrukturirani par i drugi parametar

3. Zaključak

U ovom smo kratkom članku pristupili Deklaracijama o uništavanju u Kotlinu, s brojnim običajima i posebnostima.

Da biste saznali više o Kotlinu, svakako pogledajte naše ostale članke poput Pregled API-ja Kotlin Collections i već spomenuto Razredi podataka u Kotlinu.

I kao i uvijek do kraja, cjelovita provedba ovih primjera može se naći u našem GitHub projektu.