Swift Academy · Aula

guard let para Saída Antecipada

Desembrulhe valores e saia antecipadamente em caso de falha para reduzir o aninhamento.

Aula 2 de 413 etapas

guard let para Saída Antecipada é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Swift Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Swift Academy inclui 4 aulas no total.

A Ideia de guard

guard verifica uma condição e, se ela falhar, sai do escopo atual. Ele foi criado para saídas antecipadas que mantêm o caminho principal sem recuo.

func greet(_ name: String?) {
    guard let name else {
        print("No name")
        return
    }
    print("Hello, \(name)")
}
greet("Ada")
greet(nil)

Sintaxe de guard let

Escreva guard let value = optional else { return }. Diferentemente de if let, o valor desembrulhado continua disponível no escopo depois do guard.

func double(_ text: String) {
    guard let n = Int(text) else {
        print("Not a number")
        return
    }
    print(n * 2)
}
double("8")
double("x")

O Valor Continua Disponível

Como guard encerra a execução quando há uma falha, o compilador sabe que o valor existe depois dele. Você pode usá-lo normalmente no restante da função.

func length(of text: String?) {
    guard let text else { return }
    let count = text.count
    print(count)
}
length("hello")

O bloco alternativo deve sair

O bloco else de uma guarda deve sair do escopo atual: return, break, continue ou throw. Isso é imposto pelo compilador.

func process(_ value: Int?) {
    guard let value else {
        return
    }
    print("Processing \(value)")
}
process(99)

Forma abreviada de guarda com vinculação

Assim como if let, a guarda aceita uma forma abreviada: guard let name else { ... } quando os nomes coincidem.

func show(_ name: String?) {
    guard let name else {
        print("missing")
        return
    }
    print(name)
}
show("Kai")

Fluxo principal simples

A grande vantagem da guarda é um fluxo principal simples, legível e sem aninhamento. Compare pirâmides aninhadas de if let com uma série de guardas.

func register(name: String?, age: Int?) {
    guard let name else { return }
    guard let age else { return }
    print("\(name) is \(age)")
}
register(name: "Mia", age: 28)

Protegendo condições simples

A guarda funciona com qualquer condição booleana, não apenas com opcionais. guard count > 0 else { return } encerra a execução antecipadamente.

func divide(_ a: Int, by b: Int) {
    guard b != 0 else {
        print("Cannot divide by zero")
        return
    }
    print(a / b)
}
divide(10, by: 2)
divide(10, by: 0)

Guarda em laços

Dentro de um laço, uma guarda pode usar continue para ignorar uma iteração quando os dados estão ausentes.

let inputs = ["1", "x", "3"]
for item in inputs {
    guard let n = Int(item) else { continue }
    print(n * 10)
}

Várias vinculações em uma guarda

Uma única guarda pode desembrulhar vários opcionais, separados por vírgulas. Todos devem ter sucesso para que a execução continue.

func combine(_ a: String?, _ b: String?) {
    guard let a, let b else { return }
    print(a + b)
}
combine("foo", "bar")

Guarda com verificações condicionais

Você pode adicionar condições booleanas depois de uma vinculação, separando-as por vírgula, para restringir quando a guarda será aprovada.

func validate(_ text: String?) {
    guard let text, !text.isEmpty else {
        print("invalid")
        return
    }
    print("ok: \(text)")
}
validate("")
validate("hi")

Quando escolher a guarda

Use guard para pré-condições no início de uma função e if let quando precisar do valor apenas brevemente dentro de um ramo.

func area(width: Int?, height: Int?) -> Int {
    guard let width, let height else { return 0 }
    return width * height
}
print(area(width: 3, height: 4))

Verificação rápida

Teste a guarda com vinculação.

Recapitulação: vinculação com guarda para saída antecipada

guard let value else { return } desembrulha um opcional e mantém o valor no escopo posteriormente. Seu bloco else deve sair da execução, mantendo o fluxo principal simples e legível.

func f(_ x: Int?) {
    guard let x else { return }
    print(x)
}
f(5)
Grátis para começar

Aprenda Swift com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
122
Aulas
409

Perguntas Frequentes

A aula “guard let para Saída Antecipada” é grátis?

Sim — o texto completo de “guard let para Saída Antecipada” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Swift Academy, atualize para CoddyKit PRO. O curso de Swift Academy inclui 4 aulas no total.

O que vou aprender em “guard let para Saída Antecipada”?

Desembrulhe valores e saia antecipadamente em caso de falha para reduzir o aninhamento. Você pratica Swift Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Swift Academy?

Nenhuma experiência prévia é necessária. Swift Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “guard let para Saída Antecipada”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Swift Academy?

Sim. Cada aula de Swift Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. if let e Vinculação Abreviada
  2. guard let para Saída Antecipada
  3. Vinculação de Vários Opcionais
  4. Padrão de Opcional em switch e for
← Voltar para Swift Academy