0Pricing
Swift Academy · Aula

Como funciona defer

Execute código ao sair de um escopo, independentemente do caminho seguido.

Como funciona defer é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 1 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.

O que defer faz

Um bloco defer agenda a execução de um código quando o escopo atual está prestes a ser encerrado, independentemente da forma como isso acontece.

func demo() {
    defer { print("cleanup") }
    print("work")
}
demo()

Executado ao sair do escopo

O código adiado é executado depois que o restante do escopo termina, imediatamente antes de o controle sair dele.

func greet() {
    defer { print("goodbye") }
    print("hello")
}
greet()

Adiado após o fluxo normal

Mesmo com várias instruções, o corpo de defer é executado por último.

func process() {
    defer { print("3 deferred") }
    print("1 start")
    print("2 middle")
}
process()

Adiamento dentro de um laço

Um defer dentro do corpo de um laço é executado ao final de cada iteração.

for i in 1...3 {
    defer { print("end of iteration", i) }
    print("start of iteration", i)
}

Adiamento dentro de uma condicional

O escopo pode ser qualquer bloco. Um defer em um if é executado quando esse bloco condicional termina.

func check(_ flag: Bool) {
    if flag {
        defer { print("leaving if block") }
        print("inside if")
    }
    print("after if")
}
check(true)

Capturando os valores atuais

O bloco adiado captura as variáveis por referência, portanto vê os valores delas no momento em que é executado.

func counterDemo() {
    var count = 0
    defer { print("final count:", count) }
    count = 5
}
counterDemo()

O adiamento não atrasa o trabalho

defer não é executado de forma assíncrona. Ele é executado de forma síncrona na saída do escopo, antes de a função retornar ao chamador.

func order() {
    defer { print("B") }
    print("A")
}
order()
print("C")

Uso comum: associar configuração e desmontagem

Coloque a desmontagem imediatamente ao lado da configuração para manter as duas visual e logicamente associadas.

func session() {
    print("open session")
    defer { print("close session") }
    print("do work")
}
session()

Adiamento em um bloco do

Um defer dentro de um bloco do é executado quando o bloco termina.

func run() {
    do {
        defer { print("do block cleanup") }
        print("inside do")
    }
    print("after do")
}
run()

Várias instruções no adiamento

Um bloco de adiamento pode conter várias instruções; todas são executadas juntas na saída do escopo.

func multi() {
    defer {
        print("step 1 of cleanup")
        print("step 2 of cleanup")
    }
    print("main work")
}
multi()

Por que usar o adiamento

defer garante que a limpeza aconteça independentemente de como o escopo termine, reduzindo a possibilidade de esquecê-la em algum caminho.

func guaranteed() {
    defer { print("always runs") }
    print("body")
}
guaranteed()

Verificação rápida

Teste o momento de execução do adiamento.

Recapitulação

defer agenda a execução de código para o final do escopo atual, independentemente de como ele termine. É executado de forma síncrona, por último no escopo, e é ideal para manter a desmontagem próxima da configuração.

func demo() {
    defer { print("last") }
    print("first")
}
demo()

Perguntas Frequentes

A aula “Como funciona defer” é grátis?

Sim — o texto completo de “Como funciona defer” é 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 “Como funciona defer”?

Execute código ao sair de um escopo, independentemente do caminho seguido. 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 1 de 4.

Quanto tempo leva a aula “Como funciona defer”?

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. Como funciona defer
  2. Ordenação de Vários Blocos defer
  3. defer para Limpeza de Recursos
  4. defer com Erros e Retornos Antecipados
← Voltar para Swift Academy