Operador Elvis
Parte da seção Fundamentos do Journey de Kotlin da Coddy. Lição 15 de 93.
O operador de chamada segura é ótimo para evitar falhas, mas às vezes você precisa de um valor real em vez de null. O operador Elvis ?: permite fornecer um valor padrão quando uma expressão é null.
A sintaxe é simples: coloque ?: após uma expressão anulável, seguido pelo valor alternativo:
fun main() {
val name: String? = null
val displayName = name ?: "Guest"
println(displayName) // Imprime: Guest
}Se o lado esquerdo não for nulo, esse valor será usado. Se for nulo, o lado direito se tornará o resultado. Isso funciona perfeitamente com chamadas seguras:
fun main() {
val text: String? = null
val length = text?.length ?: 0
println(length) // Imprime: 0
val greeting: String? = "Hello"
val greetingLength = greeting?.length ?: 0
println(greetingLength) // Imprime: 5
}O operador recebe esse nome porque ?: se parece com o cabelo de Elvis quando visto de lado. Mais importante, ele oferece uma maneira clara de converter tipos anuláveis em valores não anuláveis com valores padrão sensatos.
Desafio
FácilUma encomenda tem uma etiqueta de rastreamento opcional e um destino opcional. O código inicial fornece ambos os valores anuláveis. Use ?: para escolher "Pending" quando a etiqueta de rastreamento estiver ausente e "Unassigned" quando o destino estiver ausente. Imprima a etiqueta escolhida e, em seguida, o destino escolhido, em linhas separadas.
Experimente você mesmo
fun main() {
val trackingLabel: String? = null
val destination: String? = "Harbor"
// Escolha e imprima os dois valores de exibição.
}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
4Operadores – Parte 1
Operadores aritméticosOperador móduloAtribuição aumentadaOperadores de comparaçãoRecapitulação – Matemática simples7Entrada e Saída Básicas
Função PrintlnTemplates de StringEntrada com ReadLineConversão de TiposRevisão - Anos até a AposentadoriaRevisão - Verdadeiro ou Falso10Funções
Declare uma funçãoParâmetros e argumentosValores de retornoArgumentos nomeadosValores padrãoFunções de expressão únicaRecapitulação — função SigmaRecapitulação — função de validação2Variáveis
Val vs VarInferência de TiposNúmerosStringBooleanoConvenções de NomenclaturaRecapitulação - Inicializar Variáveis5Operadores – Parte 2
Operadores lógicos – Parte 1Operadores lógicos – Parte 2Operadores lógicos – Parte 3Ternário com expressão ifRecapitulação – Lógica simples8Calculadora de Divisão da Conta
Mensagem de Boas-vindasObtendo a Entrada11FizzBuzz com uma Reviravolta
Visão Geral do JogoA Função FizzBuzz3Nullabilidade
O que é Null SafetyTipos anuláveisOperador de chamada seguraOperador ElvisNoções básicas do desafio de funçõesAsserção de não nuloRecapitulação - Acesso seguro6Tomada de Decisões
Instrução IfIf - ElseIf como ExpressãoExpressão WhenWhen com IntervalosRecapitulação - Calculadora Simples9Laços de Repetição
Laço ForLaço WhileLaço Do-WhileBreakContinueIntervalos em LaçosLaço AninhadoRecapitulação - FatorialRecapitulação - Entrada Dinâmica12Fundamentos de Listas
List vs MutableListAcessando ElementosModificando ListasMétodos de ListaPair e TripleRecapitulação - Lista de ProdutosRecapitulação - Lista Invertida15Rastreador de Despesas Diárias
Visão Geral do ProjetoSair do ProgramaPratique por conta própria: Playground de Kotlin