Guard Let
Parte da seção Fundamentos do Journey de Swift da Coddy. Lição 13 de 86.
Enquanto if let desembrulha um opcional e executa o código quando um valor existe, guard let adota a abordagem oposta. Ele sai antecipadamente quando um valor está ausente. Isso é especialmente útil dentro de funções nas quais você quer tratar primeiro o caso "ruim" e manter a lógica principal limpa.
func greet(name: String?) {
guard let unwrappedName = name else {
print("No name provided")
return
}
print("Hello, \(unwrappedName)!")
}
greet(name: "Taylor") // Olá, Taylor!
greet(name: nil) // Nenhum nome fornecidoA instrução guard let verifica se name tem um valor. Se não tiver, o bloco else é executado e a função termina com return. Se o opcional contiver um valor, ele será desembrulhado em unwrappedName, e esta é a principal diferença em relação a if let: a variável desembrulhada continua disponível no restante da função, não apenas dentro de um bloco.
Esse padrão de "saída antecipada" mantém seu código legível ao tratar os casos de erro logo no início, para que a lógica principal não fique aninhada dentro de várias instruções if.
Desafio
FácilEscreva uma função validateAge que aceite um parâmetro opcional age e use guard let para desembrulhá-lo com segurança.
Se age for nil, retorne "Invalid age". Caso contrário, retorne "Age: [value]", onde [value] é o valor de age desembrulhado.
Parâmetros:
age(Int?): Um inteiro opcional que representa a idade de uma pessoa
Retorna: Uma string: "Invalid age" se a entrada for nil, ou "Age: [value]" com o valor desembrulhado.
Exemplo: Se age for 25, retorne "Age: 25". Se age for nil, retorne "Invalid age".
Experimente você mesmo
func validateAge(age: Int) -> 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