Ordem de execução de vários defers
Entenda por que o código adiado é executado na ordem inversa.
Ordem de execução de vários defers é uma aula grátis de Zig 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 Zig Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Zig Academy inclui 4 aulas no total.
Mais de um adiamento
Um único escopo pode conter várias instruções de adiamento. Quando o escopo termina, Zig precisa decidir em que ordem executá-las.
Eles são executados na ordem inversa
Vários adiamentos são executados na ordem inversa: o último que você escreveu é executado primeiro, e o primeiro é executado por último.
defer one();
defer two();Último a entrar, primeiro a sair
Esse é o comportamento clássico LIFO, assim como em uma pilha. Cada adiamento é colocado nela, e a desmontagem os remove na ordem inversa.
Um pequeno exemplo
Aqui, dois adiamentos são executados depois do trabalho. A saída é dois e depois um, porque o adiamento posterior é desmontado antes do anterior.
defer print("one");
defer print("two");
work();Por que a ordem inversa faz sentido
Os recursos geralmente dependem dos anteriores. A ordem inversa significa que você libera primeiro o mais recente, para que nada seja liberado enquanto ainda estiver em uso.
Espelhando a aquisição
Abra A e depois abra B. Os adiamentos inversos fecham B e depois A, espelhando perfeitamente a forma como você os configurou.
a.open(); defer a.close();
b.open(); defer b.close();Capturado no momento do agendamento
Cada adiamento guarda seu código na ordem, mesmo que a execução espere. A ordem é fixada no momento em que cada adiamento é alcançado.
Ignorado se nunca for alcançado
Se o escopo terminar antes que uma linha de adiamento seja alcançada, esse adiamento nunca foi agendado e não será executado.
if (early) return;
defer late();Pilhas por escopo
Cada escopo mantém sua própria pilha de adiamentos. Os escopos internos desmontam seus adiamentos antes que o escopo externo desmonte os dele.
Desmontagem previsível
Conhecer a regra da ordem inversa permite raciocinar precisamente sobre a limpeza, para que sua sequência de desmontagem nunca seja uma surpresa.
Um modelo mental útil
Imagine uma pilha de pratos: você os adiciona de cima para baixo, mas precisa remover o prato do topo, retirando primeiro o último colocado.
Verificação rápida
Dois adiamentos, um e depois dois. Qual é a ordem de execução?
Recapitulação
Vários adiamentos são desmontados na ordem inversa, como uma pilha, de modo que o recurso mais recente seja liberado primeiro e a limpeza espelhe a configuração. 🔁
Perguntas Frequentes
A aula “Ordem de execução de vários defers” é grátis?
Sim — o texto completo de “Ordem de execução de vários defers” é 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 Zig Academy, atualize para CoddyKit PRO. O curso de Zig Academy inclui 4 aulas no total.
O que vou aprender em “Ordem de execução de vários defers”?
Entenda por que o código adiado é executado na ordem inversa. Você pratica Zig 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 Zig Academy?
Nenhuma experiência prévia é necessária. Zig 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 “Ordem de execução de vários defers”?
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 Zig Academy?
Sim. Cada aula de Zig 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
- O que defer garante
- Ordem de execução de vários defers
- defer versus errdefer na prática
- Combinando abertura e fechamento