Operador de Coalescência de Nil
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 de nil 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 de nil é perfeito para instruções de uma linha em que você precisa de um valor de fallback. Ele é mais limpo do que escrever uma instrução if let quando você simplesmente quer substituir nil por um valor default. O resultado é sempre um valor não opcional, então você pode usá-lo diretamente sem precisar desembrulhá-lo depois.
Desafio
FácilEscreva uma função getDisplayName que receba um username opcional e um defaultName, e então retorne o nome de exibição apropriado usando o operador de coalescência nula.
Se o nome de usuário estiver vazio (representado por uma string vazia ""), trate-o como nil e retorne o nome padrão. Caso contrário, retorne o nome de usuário.
Parâmetros:
username(String): O nome do usuário (uma string vazia representa nil)defaultName(String): O nome alternativo a ser usado
Retorno: O nome de usuário se ele não estiver vazio; caso contrário, defaultName.
Dica: Dentro da sua função, armazene o nome de usuário em uma variável String? e, se o nome de usuário for igual a "", defina essa variável como nil usando um if simples. Em seguida, use ?? para fornecer o valor alternativo.
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 móduloAtribuição compostaRecapitulação - Matemática simplesOperadores de comparação7Entrada e Saída Básicas
Função printInterpolação de stringsEntrada com readlineConversão de tiposRecapitulação - Até 120Recapitulação - Verdadeiro ou falso10Funções
Declare uma funçãoParâmetros e argumentosValores de retornoRótulos de argumentosRevisão - função SigmaRevisão - função de validaçãoValores padrão13Iterando sobre Sequências
Iterando sobre ElementosO Método EnumeradoIterando sobre Strings P1Iterando sobre Strings P22Variáveis
Let vs VarAnotações de tipoNúmerosStringBooleanoConvenções de nomenclaturaRecapitulação - Inicializar variáveis5Operadores — Parte 2
Operadores lógicos — Parte 1Operadores lógicos — Parte 2Revisão — Lógica simplesOperadores lógicos — Parte 3Operador ternário8Calculadora de Divisão da Conta
Mensagem de Boas-vindasObtendo Dados de Entrada11FizzBuzz com um Toque Especial
Visão Geral do JogoA Função FizzBuzz3Optionais
O que são OptionaisDesembrulhando com If LetGuard LetOperador de Coalescência de NilRecapitulação - Desembrulhamento Seguro6Tomada de Decisões
Instrução IfIf - ElseRecapitulação - Calculadora SimplesInstrução SwitchSwitch com Intervalos9Laços de Repetição
Laço For-InLaço WhileLaço Repeat-WhileBreakContinueRevisão - FatorialIntervalos em LaçosLaço AninhadoRevisão - Entrada Dinâmica12Fundamentos de Arrays
Declarando um ArrayAcessando ElementosModificando ArraysMétodos de ArrayRevisão - Lista de ProdutosRevisão - Array InvertidoTuplas15Rastreador de Despesas Diárias
Visão Geral do ProjetoSair do ProgramaPratique por conta própria: Playground de Swift