Vyhlásenia o deštrukturalizácii v Kotline
1. Prehľad
V tomto tutoriáli si predstavíme koncept vyhlásenia o deštrukturalizácii v Kotline a pozrieme sa na to, ako sa dá použiť.
Ak sa chcete dozvedieť viac o Kotlinovi, prečítajte si tento článok.
2. Vyhlásenia o deštrukturalizácii
Tento koncept spočíva v zaobchádzaní s objektmi ako so sadou samostatných premenných.
2.1. Predmety
Deštrukturalizácia objektu do viacerých premenných môže byť pohodlná:
val osoba = Osoba (1, "Jon Snow", 20) val (id, meno, vek) = osoba
Týmto sme vytvorili tri nové premenné:
println (id) // 1 println (meno) // Jon Snow println (vek) // 20
Deklarácia o deštrukcii je zostavená ako nasledujúci kód:
val id = person.component1 (); val meno = osoba.component2 (); vek valencie = osoba.komponent3 ();
Aby sme mohli použiť deklaráciu deštrukcie, musíme sa uistiť, či je komponent označený operátor alebo je trieda označená údaje Kľúčové slová.
Pre viac na Dátové triedy v Kotline nezabudni skontrolovať toto článok.
2.2. Návratové typy
Deklarácie o deštrukturalizácii je možné použiť aj pri práci s návratovými hodnotami:
fun getPersonInfo () = Osoba (2, "Ned Stark", 45) val (id, meno, vek) = getPersonInfo ()
Alebo povedzme, že musíme z funkcie vrátiť dve hodnoty:
fun twoValuesReturn (): Pair {// ... return Pair (1, "success")} val (result, status) = twoValuesReturn ()
2.3. Zbierky a slučky
Iteráciu kolekcie pomocou slučiek for-loop je možné vykonať pomocou deštruktívnych vyhlásení, napríklad takto:
pre ((a, b) v zbierke) {...}
Premenné a a b sú priradené hodnoty vrátené komponent1 () a komponent2 () metódy - ktoré vracajú prvé dva prvky v zbierke.
Avšak v a Mapa, premenné by boli kľúč a hodnota, respektíve:
var mapa: HashMap = HashMap () map.put (1, osoba) pre ((kľúč, hodnota) v mape) {println ("Kľúč: $ kľúč, Hodnota: $ hodnota")}
2.4. Podčiarknutie a deštrukturalizácia v Lambdas
V prípade, že nepotrebujeme všetky hodnoty získané v deštrukčnej deklarácii, môžeme namiesto názvu premennej použiť podčiarknutie:
val (_, meno, vek) = osoba
Alebo ak nie sú potrebné polia na konci, môžeme ich vôbec vynechať:
val (id, meno) = osoba
Môžeme tiež použiť syntax deštrukčných deklarácií pre parametre lambda, pokiaľ ide o typ s príslušným zložkaN funkcie:
map.mapValues {entry -> "$ {entry.value}!" } map.mapValues {(kľúč, hodnota) -> „$ value!“ }
Uvedomte si, aký je rozdiel medzi deklarovaním dvoch parametrov a deklarovaním zničujúcej dvojice:
{a -> ...} // jeden parameter {a, b -> ...} // dva parametre {(a, b) -> ...} // zničená dvojica {(a, b), c -> ...} // zničený pár a ďalší parameter
3. Záver
V tomto rýchlom článku sme sa priblížili k Deklarácii o deštrukturalizácii v Kotline s mnohými spôsobmi použitia a osobitosťami.
Ak sa chcete dozvedieť viac o Kotlinovi, určite si pozrite naše ďalšie články ako napr Prehľad API Kotlin Collections a už spomínané Dátové triedy v Kotline.
A ako vždy, úplnú implementáciu týchto príkladov možno nájsť v našom projekte GitHub.