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 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 fornecido

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

challenge icon

Desafio

Fácil
Escreva 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
}
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

Pratique por conta própria: Playground de Swift