Operador Ternário em Kotlin: 5 Principais Erros de Iniciantes

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

Operador Ternário em Kotlin: por que ele não existe e como não pisar na bola

\n\n

Se você veio para o Kotlin vindo do Java, C# ou JavaScript, com certeza já se pegou pensando: "Onde está meu amado operador ternário condição ? valor1 : valor2?". Spoiler: ele não existe em Kotlin. E isso não é um bug, é uma feature. Os desenvolvedores da linguagem decidiram que o ternário clássico é uma entidade desnecessária que só dificulta a leitura do código, especialmente quando há mais de duas condições aninhadas.

\n\n

Mas a ausência do operador ternário não é um problema. Kotlin oferece alternativas muito mais flexíveis e seguras. No entanto, iniciantes (e até desenvolvedores experientes) frequentemente cometem os mesmos erros ao tentar emular a construção habitual. Neste artigo, vamos analisar os 5 principais erros ao trabalhar com expressões condicionais em Kotlin e mostrar como evitá-los. Vamos nessa!

\n\n

Erro nº 1: Tentar usar o operador ternário "na cara dura"

\n\n

O erro mais comum é escrever código no estilo Java:

\n\n
// ❌ Erro: essa sintaxe não existe em Kotlin\nval max = (a > b) ? a : b\n
\n\n

Kotlin simplesmente não compilará esse código. Você receberá o erro: Unresolved reference: ?. Muitos desenvolvedores ficam perdidos e começam a procurar bibliotecas ou plugins que "adicionam" o operador ternário. Não faça isso!

\n\n

Como fazer corretamente?

\n\n

Em Kotlin, if não é um operador, mas sim uma expressão. Ele retorna um valor. Portanto, em vez do ternário, use o if-else comum:

\n\n
// ✅ Maneira correta: if como expressão\nval max = if (a > b) a else b\n
\n\n

O código fica até mais fácil de ler do que o ternário clássico, especialmente se a condição for complexa. Lembre-se: if em Kotlin sempre retorna o último valor em cada ramificação.

\n\n

Erro nº 2: Esquecer o else ao fazer uma atribuição

\n\n

Como if é uma expressão, ele deve retornar um valor. Se você escrever:

\n\n
// ❌ Erro: sem else, o compilador não sabe o que retornar\nval result = if (condition) "Yes"\n
\n\n

O compilador emitirá um erro: All branches of 'if' expression are required to return a value. Isso é lógico: o que deveria estar em result se a condição for falsa? null? Uma string vazia? O compilador não adivinha.

\n\n

Como fazer corretamente?

\n\n

Sempre adicione o else:

\n\n
// ✅ Correto: ambas as ramificações retornam um valor\nval result = if (condition) "Yes" else "No"\n
\n\n

Exceção: se você estiver usando if como uma instrução (sem atribuição), o else não é obrigatório:

\n\n
// Instrução if — else não é necessário\nif (condition) {\n    println("Yes")\n}\n
\n\n

Erro nº 3: if-else aninhados complexos em vez de when

\n\n

Quando você tem mais de duas opções, uma cadeia de if-else if-else vira um "espaguete". Veja este horror:

\n\n
// ❌ Ruim: if-else aninhados são difíceis de ler\nval status = if (code == 200) "OK"\n            else if (code == 404) "Not Found"\n            else if (code == 500) "Server Error"\n            else "Unknown"\n
\n\n

As linhas pulam, os olhos se perdem. E se você adicionar mais algumas condições, vira um pesadelo.

\n\n

Como fazer corretamente?

\n\n

Use when — é um análogo do switch turbinado:

\n\n
// ✅ Ótimo: when se lê como uma tabela\nval status = when (code) {\n    200 -> "OK"\n    404 -> "Not Found"\n    500 -> "Server Error"\n    else -> "Unknown"\n}\n
\n\n

when em Kotlin também é uma expressão, portanto pode retornar um valor. E é muito mais claro do que uma cadeia de if-else. Além disso, when suporta condições complexas: intervalos, tipos, expressões arbitrárias.

\n\n
// when com intervalo\nval grade = when (score) {\n    i                

Blogs

Book Recommendations