0Pricing
Android Academy · Aula

let, also e funções de escopo

Trabalhe com valores anuláveis.

let, also e funções de escopo é uma aula grátis de Android 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 Android Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Android Academy inclui 4 aulas no total.

O que são funções de escopo?

As funções de escopo permitem executar um bloco de código no contexto de um objeto. Elas tornam o código mais conciso, especialmente ao trabalhar com valores anuláveis.

Esta lição concentra-se em let e also, as duas mais úteis para a segurança contra nulos, e em como elas se relacionam com o operador de chamada segura.

A função let

let executa um bloco e passa o objeto para ele como it. Ela retorna o que quer que o bloco retorne.

Ela é útil para transformar um valor ou limitar o escopo de um nome temporário.

fun main() {
    val length = "Kotlin".let { it.length }
    println(length)  // prints: 6
}

let para segurança contra nulos

Combine ?. com let para executar um bloco somente quando um valor não for nulo. O bloco é executado uma vez, com o valor como it.

Se o valor for nulo, o bloco será totalmente ignorado.

fun main() {
    val name: String? = "Ada"
    name?.let {
        println("Hello, " + it)
    }
}

Ignorado quando é nulo

Quando o receptor é nulo, ?.let não faz nada. O bloco nunca é executado.

Este programa não imprime nada porque name é nulo.

fun main() {
    val name: String? = null
    name?.let {
        println("Hello, " + it)
    }
}

Renomeando it

Você pode dar um nome mais claro ao parâmetro em vez de usar it. Isso melhora a legibilidade em blocos mais longos.

Use uma seta para nomeá-lo explicitamente.

val name: String? = "Bo"
name?.let { value ->
    println(value.uppercase())
}

A função also

also também passa o objeto como it, mas retorna o objeto original em vez do resultado do bloco.

Ela é excelente para efeitos colaterais, como registrar informações, enquanto mantém o valor inalterado em uma cadeia.

fun main() {
    val n = 5.also { println("got " + it) }
    println(n)  // prints: 5
}

Valor de retorno de let e also

A diferença principal é que let retorna o resultado do bloco, enquanto also retorna o objeto original.

Escolha let para transformar o valor e also para observá-lo sem alterá-lo.

val a = "hi".let { it.length }   // a = 2 (Int)
val b = "hi".also { it.length }  // b = "hi" (String)

also para registrar informações

Como also retorna o objeto, ele pode ser inserido em uma cadeia para inspecionar um valor durante o fluxo.

Aqui registramos um valor anulável somente se ele estiver presente e, em seguida, continuamos usando-o.

fun main() {
    val token: String? = "abc"
    val result = token?.also { println("token: " + it) }
    println(result)
}

let com Elvis

Combine ?.let com o operador Elvis para fornecer uma alternativa quando o valor for nulo.

O bloco produz um resultado quando o valor está presente; o lado Elvis trata o caso nulo.

fun main() {
    val raw: String? = null
    val out = raw?.let { it.trim() } ?: "empty"
    println(out)  // prints: empty
}

Escolhendo uma função de escopo

Para obter segurança contra nulos, use let quando quiser transformar ou usar um valor não nulo em um bloco. Use also quando quiser um efeito colateral, mas precisar manter o objeto original.

Ambas se combinam naturalmente com o operador de chamada segura para evitar falhas causadas por nulos.

user?.let { save(it) }      // transform/use
user?.also { log(it) }      // side effect, keep user

Um exemplo combinado

Este programa usa ?.let para criar uma mensagem e o operador Elvis como alternativa. Ele mostra o fluxo cotidiano do Kotlin com segurança contra nulos.

Nenhuma verificação explícita de nulo aparece, mas o código é totalmente seguro.

fun main() {
    val city: String? = "Goreme"
    val label = city?.let { "City: " + it } ?: "Unknown"
    println(label)
}

Verificação rápida

Teste sua compreensão de let e also.

Recapitulação

As funções de escopo executam um bloco no contexto de um objeto. let passa o objeto como it e retorna o resultado do bloco; also passa it e retorna o objeto original.

Com ?.let, você atua sobre um valor somente quando ele não é nulo. Em seguida, você reunirá essas ideias para evitar completamente NullPointerExceptions.

Perguntas Frequentes

A aula “let, also e funções de escopo” é grátis?

Sim — o texto completo de “let, also e funções de escopo” é 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 Android Academy, atualize para CoddyKit PRO. O curso de Android Academy inclui 4 aulas no total.

O que vou aprender em “let, also e funções de escopo”?

Trabalhe com valores anuláveis. Você pratica Android 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 Android Academy?

Nenhuma experiência prévia é necessária. Android 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 “let, also e funções de escopo”?

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 Android Academy?

Sim. Cada aula de Android 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. Tipos anuláveis versus não anuláveis
  2. Chamadas seguras e Elvis
  3. let, also e funções de escopo
  4. Evitando NullPointerExceptions
← Voltar para Android Academy