Menu
Coddy logo textTech

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 fornecido

A 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.

challenge icon

Desafio

Fácil

Escreva 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
}
quiz iconTeste seus conhecimentos

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