Operador ?:
Definição
O operador ?:
é chamado de elvis operator é muito utilizado para verificação de valores null
, pois evita a utilização da expressão completa do if-else
.
Caso a expressão do lado esquerdo do ?:
tiver como resultado null
, então é retornado o valor à direita do operador (not null value).
Esse operador pode ser encadeado, mas é necessário ter CUIDADO nessa situação, pois pode dificultar a leitura/entendimento do código.
Exemplo
Verificação de null
com if-else
:
val nome: String? = "Gabriel"
val comprimento: Int = if (nome != null) nome.length else 0
Verificação de null
com ?:
:
val nome: String? = "Gabriel"
val comprimento: Int = nome?.length ?: 0
Elvis operator com
throw
/return
Como as palavras reservadas throw
e return
são expressões em Kotlin, elas também podem ser usadas como not null value do operador:
fun getNome(pessoa: Pessoa) {
val nome = pessoa.getNome ?: return null
}
fun getNome(pessoa: Pessoa) {
val nome = pessoa.getNome ?: throw IllegalArgumentException()
}