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.