Swift if let em Kotlin: trabalho seguro com nullable em 2025

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Swift 'if let' no mundo Kotlin: como parar de temer null e começar a viver

\n\n

Se você já migrou de Swift para Kotlin (ou vice-versa), certamente já se deparou com a pergunta: "Como fazer aquele if let em Kotlin?". Esta é uma das perguntas mais populares no Stack Overflow, e não é à toa. Ambas as linguagens são jovens, ambas absorveram o melhor da programação funcional, mas o trabalho com opcionais (nullable) é implementado de forma diferente.

\n\n

Neste artigo, não vamos apenas mostrar como emular if let. Vamos analisar as melhores práticas de 2025 que tornarão seu código Kotlin não apenas seguro, mas também elegante. Você aprenderá quando usar let, por que also é melhor que apply, e por que o smart cast é seu novo melhor amigo.

\n\n

Breve introdução: o que é Swift 'if let'?

\n\n

Para quem não sabe: em Swift, if let é uma construção que simultaneamente verifica se uma variável opcional contém um valor e, se sim, o extrai para uma nova constante.

\n\n
// Swift\nif let unwrappedName = optionalName {\n    print("Olá, \\(unwrappedName)!")\n} else {\n    print("Nome ausente")\n}
\n\n

Isso é seguro, legível e não permite usar nil acidentalmente. Em Kotlin, não existe essa sintaxe embutida, mas há todo um arsenal de ferramentas que funcionam ainda melhor. Vamos conferir.

\n\n

Método nº1: 'if' clássico + Smart Cast

\n\n

O análogo mais direto de if let em Kotlin é o if comum com verificação de null. O compilador Kotlin é inteligente o suficiente para, após a verificação, considerar a variável como não-null dentro do bloco if. Isso é chamado de smart cast.

\n\n
// Kotlin — análogo ao Swift 'if let'\nval optionalName: String? = "Alice"\n\nif (optionalName != null) {\n    // Aqui optionalName é automaticamente convertido para String (não String?)\n    println("Olá, $optionalName!")\n} else {\n    println("Nome ausente")\n}
\n\n

Por que isso é legal? Sem variáveis extras, sem closures. O código é lido como código imperativo comum. No entanto, há um detalhe: o smart cast funciona apenas para variáveis locais (val). Se optionalName for uma propriedade da classe (var), o compilador não pode garantir que ela não mudará entre a verificação e o uso.

\n\n

Método nº2: Função '.let' — a rainha da elegância

\n\n

A função let é o "análogo do if let" mais popular em Kotlin. Ela executa um bloco de código apenas se o objeto não for null. Dentro do bloco, o objeto é acessível via it (ou você pode definir seu próprio nome).

\n\n
// Swift if let → Kotlin .let\noptionalName?.let { name -> \n    println("Olá, $name!")\n} ?: println("Nome ausente")
\n\n

Observe o ?: — este é o operador Elvis. Ele executa o código à direita se o lado esquerdo for null. Junto com let, isso fornece um análogo completo de if-else.

\n\n

Quando usar let?

\n
    \n
  • Quando você precisa executar uma sequência de ações com um valor não-null
  • \n
  • Quando você trabalha com encadeamento de chamadas nullable (chaining)
  • \n
  • Quando você quer limitar o escopo de uma variável
  • \n
\n\n

Exemplo com encadeamento:

\n\n
data class User(val name: String?, val email: String?)\n\nfun processUser(user: User?) {\n    user?.let { u ->\n        u.name?.let { n -> println("Nome: $n") }\n        u.email?.let { e -> println("Email: $e") }\n    }\n}
\n\n

Método nº3: '.also' para efeitos colaterais

\n\n

A função also é semelhante ao let, mas retorna o próprio objeto, não o resultado da lambda. Isso é útil quando você precisa fazer algo com o objeto (por exemplo, logging) e continuar trabalhando com ele.

\n\n<

Blogs

Book Recommendations