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 segue a abordagem oposta — ele sai antecipadamente quando um valor está ausente. Isso é especialmente útil dentro de funções onde você deseja lidar com o caso "ruim" primeiro 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 possui um valor. Se não possuir, o bloco else é executado e a função termina com return. Se o opcional contiver um valor, ele é desempacotado em unwrappedName — e aqui está a principal diferença em relação ao if let: a variável desempacotada permanece disponível para o restante da função, não apenas dentro de um bloco.
Este padrão de "saída antecipada" (early exit) mantém seu código legível ao lidar com casos de erro antecipadamente, para que a lógica principal não fique aninhada dentro de múltiplas instruções if.
Desafio
FácilEscreva uma função validateAge que recebe um parâmetro opcional age e usa guard let para desembrulhá-lo com segurança.
Se a idade for nil, retorne "Invalid age". Caso contrário, retorne "Age: [value]" onde [value] é a idade desembrulhada.
Parâmetros:
age(Int?): Um inteiro opcional representando a idade de uma pessoa
Retorno: Uma string — ou "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".
Folha de consulta
Use guard let para desembrulhar um opcional e sair antecipadamente quando um valor estiver ausente:
func greet(name: String?) {
guard let unwrappedName = name else {
print("No name provided")
return
}
print("Hello, \(unwrappedName)!")
}A instrução guard let verifica se o opcional possui um valor. Se não possuir, o bloco else é executado e sai da função com return. Se o opcional contiver um valor, ele é desembrulhado e permanece disponível para o restante do escopo da função.
Este padrão de "saída antecipada" (early exit) lida com casos de erro antecipadamente, mantendo a lógica principal limpa e sem recuos excessivos.
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 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