apply e also
Configure e cause efeitos colaterais
apply e also é uma aula grátis de Kotlin Academy no CoddyKit. Esta é a aula 2 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.
Configurando objetos
apply e also são funções de escopo que retornam o próprio objeto, em vez do resultado da lambda. Isso as torna perfeitas para configuração e encadeamento.
A função apply
apply executa um bloco com o objeto como this e retorna o objeto. É a ferramenta clássica para inicializar um objeto depois de criá-lo.
fun main() {
val builder = StringBuilder().apply {
append("Hello")
append(", ")
append("World")
}
println(builder.toString())
}Por que apply retorna o objeto
Como apply retorna o receptor, você pode atribuir o objeto configurado diretamente a uma variável.
data class Person(var name: String = "", var age: Int = 0)
fun main() {
val p = Person().apply {
name = "Alice"
age = 30
}
println(p)
}apply usa this
Dentro de apply, o objeto é o receptor; por isso, você acessa suas propriedades diretamente, sem nenhum prefixo.
data class Config(var host: String = "", var port: Int = 0)
fun main() {
val config = Config().apply {
host = "localhost"
port = 8080
}
println("${config.host}:${config.port}")
}A função also
also executa um bloco com o objeto como it e retorna o objeto. Ela é usada para efeitos colaterais, como registro ou validação, que não alteram o objeto.
fun main() {
val numbers = mutableListOf(1, 2, 3)
numbers
.also { println("Before: $it") }
.add(4)
println("After: $numbers")
}also usa it
Como also expõe o objeto como it, ele é conveniente quando você ainda quer fazer referência ao this externo ou simplesmente manter a referência explícita.
fun main() {
val value = 42
.also { println("Logging value: $it") }
println(value)
}apply versus also
A diferença é semelhante à de run e let:
applyusathise é ideal para configurar propriedades.alsousaite é ideal para efeitos colaterais no objeto.
Ambos retornam o objeto original.
data class Box(var size: Int = 0)
fun main() {
val box = Box()
.apply { size = 5 }
.also { println("Created box with size ${it.size}") }
println(box)
}Encadeando apply e also
Como ambos retornam o objeto, você pode encadeá-los para primeiro configurar o objeto e depois executar efeitos colaterais em um fluxo encadeado.
data class Account(var owner: String = "", var balance: Int = 0)
fun main() {
val account = Account()
.apply { owner = "Sam" }
.apply { balance = 100 }
.also { println("New account: $it") }
println(account.balance)
}also para validação
Use also para inserir uma verificação no meio de um encadeamento sem interromper o fluxo.
fun main() {
val result = listOf(1, 2, 3, 4)
.filter { it % 2 == 0 }
.also { check(it.isNotEmpty()) { "No even numbers" } }
println(result)
}Retornar o objeto permite criar fluxos
A característica comum de apply e also é que eles nunca interrompem um encadeamento, pois sempre devolvem o mesmo objeto com o qual você começou.
fun main() {
val text = StringBuilder()
.apply { append("a") }
.also { it.append("b") }
.apply { append("c") }
println(text)
}Escolhendo apply ou also
Use apply ao inicializar ou modificar um objeto usando seus próprios membros. Use also ao executar uma ação que utiliza o objeto, mas não o configura, como registro, depuração ou validação.
Verificação rápida
Qual valor apply e also retornam?
Recapitulação
Você aprendeu as duas funções de escopo que retornam objetos:
applyusathispara configurar um objeto.alsousaitpara executar efeitos colaterais em um objeto.
Ambos retornam o objeto, permitindo encadeamentos organizados. Em seguida, você aprenderá a agrupar operações com with.
Perguntas Frequentes
A aula “apply e also” é grátis?
Sim — o texto completo de “apply e also” é 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 “apply e also”?
Configure e cause efeitos colaterais 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 2 de 4.
Quanto tempo leva a aula “apply e also”?
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
- let e run
- apply e also
- with
- Escolha a Opção Certa