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.