Operador de Coalescência Nula
Parte da seção Fundamentos do Journey de Swift da Coddy — lição 14 de 86.
Às vezes, você só quer fornecer um valor padrão quando um opcional é nil, sem escrever várias linhas de código. O operador de coalescência nula do Swift (??) faz exatamente isso — ele desempacota um opcional se ele tiver um valor, ou retorna um valor padrão se for nil.
let nickname: String? = nil
let displayName = nickname ?? "Guest"
print(displayName) // GuestComo nickname é nil, o operador retorna "Guest" em vez disso. Se nickname tivesse um valor, esse valor seria usado.
let username: String? = "SwiftCoder"
let greeting = username ?? "Anonymous"
print(greeting) // SwiftCoderO operador de coalescência nula é perfeito para instruções de uma única linha onde você precisa de um valor de fallback. É mais limpo do que escrever uma instrução if let quando você simplesmente deseja substituir nil por um valor padrão. O resultado é sempre um valor não opcional, então você pode usá-lo diretamente sem a necessidade de desembrulhar (unwrapping) adicional.
Desafio
FácilEscreva uma função getDisplayName que recebe um username opcional e um defaultName, e então retorna o nome de exibição apropriado usando o operador de coalescência nula (nil coalescing operator).
Se o username estiver vazio (representado por uma string vazia ""), trate-o como nil e retorne o nome padrão. Caso contrário, retorne o username.
Parâmetros:
username(String): O nome do usuário (uma string vazia representa nil)defaultName(String): O nome de reserva (fallback) a ser usado
Retorna: O username se não estiver vazio, caso contrário, o defaultName.
Dica: Converta o username para um opcional dentro da sua função — se estiver vazio, torne-o nil. Em seguida, use ?? para fornecer o valor de reserva.
Folha de consulta
O operador de coalescência nula (??) desembrulha um opcional se ele tiver um valor, ou retorna um valor padrão se for nil:
let nickname: String? = nil
let displayName = nickname ?? "Guest"
print(displayName) // GuestSe o opcional tiver um valor, esse valor será usado em vez disso:
let username: String? = "SwiftCoder"
let greeting = username ?? "Anonymous"
print(greeting) // SwiftCoderO resultado é sempre um valor não opcional, tornando-o mais limpo do que o if let para cenários simples de fallback.
Experimente você mesmo
func getDisplayName(username: String, defaultName: String) -> String {
// Escreva o código aqui
}
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 de MóduloAtribuição CompostaRecapitulação - Matemática SimplesOperadores de Comparação7IO Básico
Função PrintInterpolação de StringsEntrada ReadLineConversão de TiposRecapitulação - Até 120Recapitulação - Verdadeiro ou Falso10Funções
Declarar uma FunçãoParâmetros e ArgumentosValores de RetornoRótulos de ArgumentosRecapitulação - Função SigmaRecapitulação - Função de ValidaçãoValores Padrão13Iterando sobre Sequências
Iterando sobre ElementosO Método EnumeratedIterando sobre Strings P1Iterando sobre Strings P22Variáveis
Let vs VarAnotações de TipoNúmerosStringBooleanosConvenções de NomenclaturaRecapitulação - Inicializar Variáveis5Operadores Parte 2
Operadores Lógicos Parte 1Operadores Lógicos Parte 2Recapitulação - Lógica SimplesOperadores Lógicos Parte 3Operador Ternário8Calculadora de Divisão de Conta
Mensagem de Boas-vindasObtendo Entrada11FizzBuzz com um Diferencial
Visão Geral do JogoA Função FizzBuzz3Opcionais
O que são OpcionaisDesembrulhando com If LetGuard LetOperador de Coalescência NulaRecapitulação - Desembrulho Seguro6Tomada de Decisão
Estrutura IfIf - ElseRecapitulação - Calculadora SimplesEstrutura SwitchSwitch com Intervalos9Loops
Loop For-InLoop WhileLoop Repeat-WhileBreakContinueRecapitulação - FatorialIntervalos em LoopsLoop AninhadoRecapitulação - Entrada Dinâmica12Fundamentos de Arrays
Declarando um ArrayAcessando ElementosModificando ArraysMétodos de ArrayRecapitulação - Lista de ProdutosRecapitulação - Array InvertidoTuplas15Rastreador de Despesas Diárias
Visão Geral do ProjetoSair do Programa