Declarações de Desestruturação
Desempacote em variáveis
Declarações de Desestruturação é uma aula grátis de Kotlin Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Kotlin Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Kotlin Academy inclui 4 aulas no total.
Desmembrando objetos
Às vezes, você deseja extrair várias propriedades de um objeto de uma só vez.
As declarações de desmembramento do Kotlin permitem atribuir várias variáveis a partir de um único objeto em uma só linha.
Desmembramento básico
Coloque os nomes entre parênteses à esquerda de =. O Kotlin atribui os componentes do objeto a eles na ordem.
As classes de dados oferecem esse suporte automaticamente.
data class User(val name: String, val age: Int)
fun main() {
val user = User("Alice", 30)
val (name, age) = user
println(name)
println(age)
}Como funciona
Nos bastidores, a desestruturação chama component1(), component2() e assim por diante.
A posição de cada variável corresponde à função de componente correspondente.
data class Point(val x: Int, val y: Int)
fun main() {
val p = Point(3, 7)
println(p.component1())
println(p.component2())
}A ordem importa
As variáveis são associadas pela posição, não pelo nome.
A primeira variável sempre recebe a primeira propriedade do construtor, independentemente do nome que você atribuir a ela.
data class Pair2(val first: Int, val second: Int)
fun main() {
val (a, b) = Pair2(10, 20)
println(a) // first property
println(b) // second property
}Ignorando componentes
Use um sublinhado _ para ignorar um componente de que você não precisa.
Isso mantém seu código limpo quando apenas alguns valores são importantes.
data class User(val name: String, val age: Int, val city: String)
fun main() {
val (name, _, city) = User("Mia", 28, "Paris")
println(name)
println(city)
}Desestruturação em laços
A desestruturação é especialmente útil ao iterar sobre coleções de objetos.
Você pode desempacotar cada elemento diretamente no cabeçalho do for.
data class User(val name: String, val age: Int)
fun main() {
val users = listOf(User("A", 20), User("B", 25))
for ((name, age) in users) {
println(name + " is " + age)
}
}Desestruturação de entradas de mapas
Os mapas permitem a desestruturação porque suas entradas fornecem componentes de chave e valor.
Isso torna a iteração sobre um mapa muito fácil de ler.
fun main() {
val scores = mapOf("Alice" to 90, "Bob" to 85)
for ((name, score) in scores) {
println(name + ": " + score)
}
}Retornando vários valores
Uma função pode retornar uma classe de dados, e quem a chama pode desestruturar o resultado.
Essa é uma alternativa limpa aos parâmetros de saída.
data class MinMax(val min: Int, val max: Int)
fun minMax(nums: List<Int>): MinMax {
return MinMax(nums.min(), nums.max())
}
fun main() {
val (low, high) = minMax(listOf(3, 1, 8, 5))
println(low)
println(high)
}Desestruturação de Pair e Triple
A biblioteca padrão oferece suporte à desestruturação para Pair e Triple também.
Eles são úteis para agrupamentos rápidos sem a necessidade de definir uma classe.
fun main() {
val pair = Pair("x", 1)
val (label, value) = pair
println(label)
println(value)
}Desestruturação de parâmetros de lambda
Você pode desestruturar diretamente na lista de parâmetros de uma lambda.
Isso é comum ao mapear entradas ou pares.
fun main() {
val map = mapOf(1 to "one", 2 to "two")
val text = map.map { (key, value) -> "" + key + "=" + value }
println(text)
}Juntando tudo
A desestruturação desempacota objetos em variáveis:
- Use parênteses à esquerda de
= - Os componentes são associados pela posição
- Ignore componentes com
_ - Funciona em laços, lambdas e retornos
data class Result(val ok: Boolean, val message: String)
fun main() {
val (ok, message) = Result(true, "done")
println(ok)
println(message)
}Verificação rápida
Teste sua compreensão das declarações de desestruturação.
Recapitulação
Você aprendeu as declarações de desestruturação:
- Elas desempacotam um objeto em várias variáveis
- A associação é feita pela posição por meio de
componentN() _ignora componentes indesejados- Elas funcionam em laços, mapas, lambdas e retornos
A seguir, você usará classes de dados dentro de coleções, como conjuntos e mapas.
Aprenda Kotlin com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 51
- Aulas
- 203
Perguntas Frequentes
A aula “Declarações de Desestruturação” é grátis?
Sim — o texto completo de “Declarações de Desestruturação” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Kotlin Academy, atualize para CoddyKit PRO. O curso de Kotlin Academy inclui 4 aulas no total.
O que vou aprender em “Declarações de Desestruturação”?
Desempacote em variáveis Você pratica Kotlin Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Kotlin Academy?
Nenhuma experiência prévia é necessária. Kotlin Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Declarações de Desestruturação”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Kotlin Academy?
Sim. Cada aula de Kotlin Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Declaração de Classes de Dados
- copy e equals
- Declarações de Desestruturação
- Classes de Dados em Coleções