0Pricing
Kotlin Academy · Aula

with

Agrupe operações

with é 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.

A função with

with é uma função de escopo que recebe um objeto como argumento (não como receptor de uma chamada) e executa um bloco com esse objeto como this. Ela retorna o resultado da lambda.

Uso básico de with

Você passa o objeto para with e acessa seus membros diretamente dentro do bloco.

fun main() {
    val name = "Kotlin"
    val description = with(name) {
        "$this has $length characters"
    }
    println(description)
}

Agrupando várias operações

with é especialmente útil quando você precisa chamar vários métodos ou ler várias propriedades do mesmo objeto. Ele evita repetir o nome do objeto.

fun main() {
    val sb = StringBuilder()
    with(sb) {
        append("Line 1\n")
        append("Line 2\n")
        append("Line 3")
    }
    println(sb)
}

with usa this

Assim como run e apply, with expõe o objeto como this; por isso, o acesso a membros não precisa de prefixo.

data class Rectangle(val width: Int, val height: Int)

fun main() {
    val rect = Rectangle(4, 5)
    val area = with(rect) {
        width * height
    }
    println("Area: $area")
}

with retorna o resultado da lambda

O valor da última expressão no bloco se torna o resultado de with, assim como em run.

fun main() {
    val list = listOf(1, 2, 3, 4, 5)
    val summary = with(list) {
        "Size=$size, First=${first()}, Last=${last()}"
    }
    println(summary)
}

with versus run

with(obj) { ... } e obj.run { ... } fazem praticamente a mesma coisa. A diferença está na sintaxe:

  • run é uma extensão chamada no objeto, por isso funciona bem com chamadas seguras.
  • with recebe o objeto como argumento e soa naturalmente como "com este objeto, faça...".
fun main() {
    val s = "data"
    val a = with(s) { uppercase() }
    val b = s.run { uppercase() }
    println("$a $b")
}

with não é para valores anuláveis

Como o objeto é passado como argumento, with não se combina bem com o operador de chamada segura. Para receptores anuláveis, prefira obj?.run { } ou obj?.let { }.

fun main() {
    val name: String? = "Eve"
    name?.run { println("Hello $this") }
    println("with is awkward for nullables")
}

Lendo e calculando ao mesmo tempo

Um padrão comum é ler várias propriedades e calcular um único resultado, tudo dentro de um bloco legível.

data class Order(val items: Int, val pricePerItem: Int)

fun main() {
    val order = Order(3, 20)
    val total = with(order) {
        items * pricePerItem
    }
    println("Total: $total")
}

Construindo strings com with

Combinado com buildString ou StringBuilder, with cria um código de construção organizado e sem prefixos.

fun main() {
    val report = StringBuilder()
    with(report) {
        appendLine("Report")
        appendLine("======")
        appendLine("All good")
    }
    print(report)
}

with em uma coleção

Você pode chamar várias funções de coleção na mesma lista sem repetir o nome dela.

fun main() {
    val numbers = listOf(10, 20, 30)
    with(numbers) {
        println("Sum: ${sum()}")
        println("Max: ${max()}")
        println("Average: ${average()}")
    }
}

Quando usar with

Escolha with quando tiver um objeto não nulo e quiser executar um grupo de operações nele, retornando opcionalmente um resultado. Isso indica: "vou trabalhar com este objeto por algum tempo".

Verificação rápida

Como with recebe seu objeto?

Recapitulação

with agrupa operações em um único objeto não nulo passado como argumento, expõe esse objeto como this e retorna o resultado da lambda. Ele é semelhante a run, mas usa a sintaxe de argumento. Em seguida, você aprenderá a escolher a função de escopo certa para cada situação.

Perguntas Frequentes

A aula “with” é grátis?

Sim — o texto completo de “with” é 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 “with”?

Agrupe operações 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 “with”?

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