Declarações de desestruturação com componentN
Desestruture instâncias de data class em variáveis usando funções component.
Declarações de desestruturação com componentN é 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.
Noções básicas de desestruturação
Uma declaração de desestruturação desempacota um objeto em várias variáveis de uma só vez. Ela usa as funções de operador componentN().
Desestruturando uma classe de dados
As classes de dados geram automaticamente component1, component2, ... para que você possa escrever val (a, b) = obj.
data class Point(val x: Int, val y: Int)
fun main() {
val p = Point(3, 5)
val (x, y) = p
println("x=$x, y=$y")
}Desestruturando um Pair
Os tipos da biblioteca padrão Pair e Triple oferecem suporte à desestruturação imediatamente.
fun main() {
val pair = "Ada" to 35
val (name, age) = pair
println("$name is $age")
}Desestruturando um Triple
Triple armazena três valores; desestruture-o em três variáveis.
fun main() {
val rgb = Triple(255, 128, 0)
val (r, g, b) = rgb
println("R=$r G=$g B=$b")
}Desestruturação na iteração de um Map
As entradas de Map têm component1 (chave) e component2 (valor). Faça a desestruturação no cabeçalho de um laço for.
fun main() {
val ages = mapOf("Alice" to 30, "Bob" to 25)
for ((name, age) in ages) {
println("$name -> $age")
}
}Desestruturação em lambdas
As lambdas que aceitam pares podem desestruturar os parâmetros diretamente.
fun main() {
val pairs = listOf("a" to 1, "b" to 2, "c" to 3)
pairs.forEach { (letter, num) -> println("$letter=$num") }
}Ignorando valores com _
Use o sublinhado _ para ignorar os valores de que não precisa.
data class User(val name: String, val email: String, val age: Int)
fun main() {
val u = User("Ada", "ada@example.com", 35)
val (name, _, age) = u
println("$name ($age)")
}Retornando vários valores
Uma função pode retornar um Pair ou uma classe de dados personalizada; o chamador faz a desestruturação.
data class Result(val sum: Int, val product: Int)
fun computeBoth(a: Int, b: Int) = Result(a + b, a * b)
fun main() {
val (s, p) = computeBoth(4, 5)
println("sum=$s product=$p")
}componentN personalizado
Qualquer classe pode oferecer suporte à desestruturação declarando operator fun componentN().
class RGB(val r: Int, val g: Int, val b: Int) {
operator fun component1() = r
operator fun component2() = g
operator fun component3() = b
}
fun main() {
val (red, green, blue) = RGB(255, 100, 0)
println("$red $green $blue")
}Desestruturação com withIndex()
Obtenha o índice e o valor do par ao iterar com withIndex().
fun main() {
val fruits = listOf("apple", "banana", "cherry")
for ((idx, fruit) in fruits.withIndex()) {
println("$idx: $fruit")
}
}Limitação: baseada em posição
A desestruturação é posicional, não baseada em nomes. Reordenar os campos de uma classe de dados altera silenciosamente o significado nos locais de chamada.
data class Point(val x: Int, val y: Int)
fun main() {
val p = Point(10, 20)
val (a, b) = p // a=x, b=y
// Add a property in the middle and old destructuring shifts!
println("$a $b")
}Verificação rápida
Qual função de operador permite desestruturar a propriedade de índice i?
Recapitulação
A desestruturação usa funções de operador componentN(). Classes de dados, Pair, Triple e entradas de Map oferecem suporte a ela imediatamente. Use _ para ignorar valores e tenha cuidado: a desestruturação é posicional, não baseada em nomes.
Perguntas Frequentes
A aula “Declarações de desestruturação com componentN” é grátis?
Sim — o texto completo de “Declarações de desestruturação com componentN” é 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 com componentN”?
Desestruture instâncias de data class em variáveis usando funções component. 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 com componentN”?
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
- Noções básicas de data class: métodos gerados automaticamente
- Copiando com copy() e substituições parciais
- Declarações de desestruturação com componentN
- Data classes em coleções e como chaves de mapas