Como usar Elvis Operator
Tags: kotlin, braziliandevs
Published: 2021-12-20 04:40:29

## Kotlinautas

Esse conteúdo é oferecido e distribuído pela comunidade [Kotlinautas](https://twitter.com/kotlinautas/), uma comunidade brasileira que busca oferecer conteúdo gratuito sobre a linguagem Kotlin em um espaço plural.

![capa Kotlinautas](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jreawpvk6whxigcpmctf.png)

## 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:

```kotlin
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 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:

```kotlin
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:

```kotlin
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.

Muito obrigada por ler ❤️🏳️‍⚧️ e me segue nas redes, é tudo [@lissatransborda](https://twitter.com/lissatransborda) 👀