Dichiarazioni di destrutturazione a Kotlin

1. Panoramica

In questo tutorial, introdurremo il concetto di Destructuring Declarations in Kotlin e daremo un'occhiata a come può essere utilizzato.

Se vuoi saperne di più su Kotlin, dai un'occhiata a questo articolo.

2. Dichiarazioni di destrutturazione

Questo concetto consiste nel trattare gli oggetti come un insieme di variabili separate.

2.1. Oggetti

Può essere conveniente destrutturare un oggetto in più variabili:

val person = Person(1, "Jon Snow", 20) val(id, name, age) = person 

Con questo, abbiamo creato tre nuove variabili:

println(id) //1 println(name) //Jon Snow println(age) //20 

Una dichiarazione di destrutturazione viene compilata come il codice seguente:

val id = person.component1(); val name = person.component2(); val age = person.component3();

Per utilizzare la dichiarazione di destrutturazione, dobbiamo assicurarci che il componente sia contrassegnato con l' operatore o che la classe sia contrassegnata con le parole chiave dei dati .

Per ulteriori informazioni sulle classi di dati in Kotlin, non dimenticare di controllare questo articolo.

2.2. Tipi restituiti

Le dichiarazioni di destrutturazione possono essere utilizzate anche quando si lavora con i valori di ritorno:

fun getPersonInfo() = Person(2, "Ned Stark", 45) val(id, name, age) = getPersonInfo()

Oppure supponiamo di dover restituire due valori da una funzione:

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

2.3. Raccolte e cicli For

L'iterazione di una raccolta con cicli for può essere eseguita con dichiarazioni di destrutturazione, come questa:

for ((a, b) in collection) { ... } 

Le variabili a e b sono valori restituiti da assegnare Componente1 () e componente2 () che restituiscono primo due elementi di una collezione - metodi.

Tuttavia, in una mappa , le variabili sarebbero rispettivamente chiave e valore :

var map: HashMap = HashMap() map.put(1, person) for((key, value) in map){ println("Key: $key, Value: $value") }

2.4. Sottolineatura e destrutturazione in Lambdas

Nel caso in cui non abbiamo bisogno di tutti i valori ottenuti in una dichiarazione destrutturante, possiamo usare il carattere di sottolineatura invece del nome della variabile:

val (_, name, age) = person

Oppure, se i campi non necessari sono alla fine, possiamo ometterli del tutto:

val (id, name) = person

Possiamo anche usare la sintassi delle dichiarazioni destrutturanti per i parametri lambda, purché sia ​​un tipo con le funzioni componentN appropriate :

map.mapValues { entry -> "${entry.value}!" } map.mapValues { (key, value) -> "$value!" }

Sii consapevole della differenza tra la dichiarazione di due parametri e la dichiarazione di una coppia destrutturante:

{ a -> ... } // one parameter { a, b -> ... } // two parameters { (a, b) -> ... } // a destructured pair { (a, b), c -> ... } // a destructured pair and another parameter

3. Conclusione

In questo rapido articolo, abbiamo affrontato le dichiarazioni di destrutturazione in Kotlin, con i suoi numerosi usi e particolarità.

Per saperne di più su Kotlin, sicuramente, controlla i nostri altri articoli come Panoramica dell'API delle raccolte Kotlin e le classi di dati già citate in Kotlin .

E, come sempre, l'implementazione completa di questi esempi può essere trovata nel nostro progetto GitHub.