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 0Verificação de null com ?::
val nome: String? = "Gabriel"
val comprimento: Int = nome?.length ?: 0Elvis 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()
}