Szerkezetátalakítási nyilatkozatok Kotlinban
1. Áttekintés
Ebben az oktatóanyagban bemutatjuk a szerkezetátalakítási nyilatkozatok fogalmát Kotlinban, és megnézzük, hogyan lehet használni.
Ha többet szeretne megtudni Kotlinról, nézze meg ezt a cikket.
2. Szerkezetátalakítási nyilatkozatok
Ez a koncepció abból áll, hogy az objektumokat külön változók halmazaként kezeljük.
2.1. Tárgyak
Kényelmes lehet egy objektum több változóra való felosztása:
val személy = Személy (1, "Jon Snow", 20) val (id, név, életkor) = személy
Ezzel három új változót hoztunk létre:
println (id) // 1 println (név) // Jon Snow println (életkor) // 20
A szerkezetátalakítási nyilatkozatot a következő kódként állítják össze:
val id = személy.komponens1 (); val név = személy.komponens2 (); val kor = személy.komponens3 ();
A szerkezetátalakítási deklaráció használatához meg kell győződnünk arról, hogy az összetevőket a operátor vagy az osztályt a adat kulcsszavak.
További részletekért Adatosztályok Kotlinban, ne felejtsd el ellenőrizni ez cikk.
2.2. Vissza típusok
A szerkezetátalakítási nyilatkozatok akkor is használhatók, ha visszatérési értékekkel dolgoznak:
fun getPersonInfo () = Személy (2, "Ned Stark", 45) val (id, név, életkor) = getPersonInfo ()
Vagy tegyük fel, hogy két értéket kell visszaadnunk egy függvényből:
fun twoValuesReturn (): Párosítás {// ... return Pair (1, "siker")} val (eredmény, állapot) = twoValuesReturn ()
2.3. Gyűjtemények és For-hurkok
A for-ciklusokkal végzett gyűjtemény megismétlése a deklarációk destrukciójával végezhető el, így:
a ((a, b) gyűjteményhez) {...}
A változók a és b hozzárendelt értékeket ad vissza komponens1 () és komponens2 () módszerek - amelyek a gyűjtemény első két elemét adják vissza.
Azonban a Térkép, a változók lennének kulcs és érték, illetőleg:
var map: HashMap = HashMap () map.put (1, személy) a ((kulcs, érték) a térképen) {println ("Kulcs: $ kulcs, Érték: $ érték")}
2.4. Aláhúzás és szerkezetátalakítás a Lambdasban
Abban az esetben, ha nincs szükségünk egy destruktív deklarációban kapott összes értékre, használhatunk aláhúzást a változó neve helyett:
val (_, név, életkor) = személy
Vagy ha nem szükséges mezők vannak a végén, akkor ezeket egyáltalán kihagyhatjuk:
val (id, név) = személy
Használhatjuk a destruktúra deklarációk szintaxisát a lambda paraméterekhez is, amennyiben ez egy megfelelő típusú típus komponensN funkciók:
map.mapValues {entry -> "$ {entry.value}!" } map.mapValues {(kulcs, érték) -> "$ value!" }
Ne feledje a különbséget két paraméter deklarálása és egy destruktív pár deklarálása között:
{a -> ...} // egy paraméter {a, b -> ...} // két paraméter {(a, b) -> ...} // destrukturált pár {(a, b), c -> ...} // egy destrukturált pár és egy másik paraméter
3. Következtetés
Ebben a rövid cikkben megkerestük a kotlini szerkezetátalakítási nyilatkozatokat, számos felhasználási és sajátossággal.
Ha többet szeretne megtudni Kotlinról, feltétlenül nézze meg a többi cikkünket, például A Kotlin Collections API áttekintése és a már említett Adatosztályok Kotlinban.
És mint mindig, ezeknek a példáknak a teljes megvalósítása megtalálható a GitHub projektünkben.