Kotlin Academy · Aula

Declarações de Desestruturação

Desempacote em variáveis

Aula 3 de 413 etapas

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.

Grátis para começar

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

  1. Declaração de Classes de Dados
  2. copy e equals
  3. Declarações de Desestruturação
  4. Classes de Dados em Coleções
← Voltar para Kotlin Academy