← voltar para guias
BásicoBack-End

Como usar Elvis Operator

Explica o conceito de Null Safety no Kotlin e como o Elvis Operator (?:) ajuda a tratar valores nulos de forma elegante e segura.

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 que é Null Safety?

Kotlin é uma linguagem que aproveita recursos de outras linguagens , e melhora muita coisa, especialmente em relação ao Java.

Quem já programou em Java provavelmente já sofreu com o NullPointerException, um erro que acontece 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
  • 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 que é Elvis Operator?

O Elvis Operator (?:) é um operador que usamos junto a uma propriedade ou variável que pode ter null como valor. Assim:

repositorioPostagem.encontrar(10) ?:
  • 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"
}
  • 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.

← voltar para o início