0Pricing
Kotlin Academy · Aula

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:

  • apply usa this e é ideal para configurar propriedades.
  • also usa it e é 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:

  • apply usa this para configurar um objeto.
  • also usa it para 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

  1. let e run
  2. apply e also
  3. with
  4. Escolha a Opção Certa
← Voltar para Kotlin Academy