DEV Community

Cover image for Como usar Elvis Operator
Lissa Ferreira for Kotlinautas

Posted on • Edited on

11 2

Como usar Elvis Operator

Kotlinautas

Esse conteúdo é oferecido e distribuído pela comunidade Kotlinautas, uma comunidade brasileira que busca oferecer conteúdo gratuito sobre a linguagem Kotlin em um espaço plural.

capa Kotlinautas

O quê é Null Safety?

Kotlin é uma linguagem que utiliza vários recursos de outras linguagens, e também melhoramentos, principalmente em relação ao Java.

Muitas pessoas que já programaram Java, tiveram problemas bem chatos envolvendo NullPointerExeception, que é um erro que ocorre quando tentamos usar uma propriedade de uma classe que tem seu valor como null.

A linguagem Kotlin tenta ao máximo evitar esse tipo de problema. Adicionando garantias que o seu código DEVE ser seguro á erros envolvendo instâncias de classes, variáveis, propriedades,etc. que podem ser nulas.

Para poder utilizar uma propriedade que pode ser nula, é necessário ou fazer o tratamento caso essa variável seja um erro, ou usando !! para dizer ao Kotlin que você tem certeza que não terá nenhum erro relacionado. Como no exemplo abaixo:



val nome = usuario!!.nome


Enter fullscreen mode Exit fullscreen mode
  • No exemplo acima, usuario pode ser uma variável nula, e por conta disso foi usado o símbolo !!, deixando claro ao Kotlinque temos certeza que essa variável não é null. Caso seja null, um erro vai ser lançado.

Podemos também como foi citado acima, tratar esse erro, buscando evitar o problema de termos um erro indesejado na nossa aplicação. E esse tratamento pode ser feito usando Elvis Operator

O quê é Elvis Operator?

Elvis Operator (?:) é um operador que podemos usar junto da propriedade ou variável que pode ter null como seu valor. da seguinte maneira:



repositorioPostagem.encontrar(10) ?:


Enter fullscreen mode Exit fullscreen mode
  • Usamos um exemplo comum, um sistema onde precisamos pegar uma postagem (ou qualquer outro item que está guardado dentro do banco de dados), e caso essa postagem com esse ID 10 não seja encontrada, iremos usar o tratamento no Elvis Operator (que por enquanto não existe)
  • Elvis Operator tem esse formato de ?: por conta que parece com o cabelo do Elvis Presley.

A expressão á direita do Elvis Operator representa o quê vamos fazer caso essa propriedade ou variável seja nula. Podemos por exemplo, retornar a função:



fun pegarTituloDaPostagem(id: Int): String {
  return repositorioPostagem.encontrar(id).titulo ?: return "postagem não encontrada"
}


Enter fullscreen mode Exit fullscreen mode
  • Temos uma função que irá retornar o título de uma postagem. Caso a postagem não seja encontrada, a postagem será null, com isso o Elvis Operator irá fazer que a string postagem não encontrada seja retornada, pois não há nenhuma postagem relacionada com esse ID.

Esse exemplo é simples, mas há situações em que é realmente necessário usar um Elvis Operator para garantir que o seu código não vai dar nenhum erro inesperado, pois como o próprio nome diz, não tem como planejar quando um erro inesperado irá acontecer.

Finalização

Neste artigo você aprendeu como utilizar o Elvis Operator para tornar seu código mais legível e com melhor tratamento de erros. Evitando erros inesperados, deixando sua aplicação mais resiliente.

Muito obrigada por ler ❤️🏳️‍⚧️ e me segue nas redes, é tudo @lissatransborda 👀

Hostinger image

Get n8n VPS hosting 3x cheaper than a cloud solution

Get fast, easy, secure n8n VPS hosting from $4.99/mo at Hostinger. Automate any workflow using a pre-installed n8n application and no-code customization.

Start now

Top comments (1)

Collapse
 
lelepg profile image
Letícia Pegoraro Garcez

A cada artigo que eu leio da comunidade Kotlinautas mais vontade de aprender Kotlin eu tenho. Elvis é simplesmente o melhor nome de operador que eu já vi até agora!

Sentry mobile image

Mobile Vitals: A first step to Faster Apps

Slow startup times, UI hangs, and frozen frames frustrate users—but they’re also fixable. Mobile Vitals help you measure and understand these performance issues so you can optimize your app’s speed and responsiveness. Learn how to use them to reduce friction and improve user experience.

Read the guide

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay