Zig Academy · 강의

defer가 보장하는 것

스코프가 끝날 때 코드를 실행합니다.

레슨 1/413개 단계

defer가 보장하는 것은(는) CoddyKit의 무료 Zig Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Zig Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Zig Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

신뢰할 수 있는 정리

거의 모든 프로그램은 나중에 닫아야 하는 무언가를 엽니다. Zig는 정리를 절대 잊지 않도록 defer를 제공합니다.

defer의 기능

defer 문은 주변 스코프가 어떻게 종료되든, 해당 스코프가 끝날 때 실행할 코드를 예약합니다.

defer cleanup();

정리를 즉시 작성하기

핵심은 리소스를 획득하는 줄의 바로 옆에 정리 줄을 작성하는 것입니다. 그러면 두 줄을 분리할 수 없습니다.

const file = try open();
defer file.close();

스코프가 끝날 때 실행됩니다

지연된 코드는 즉시 실행되지 않습니다. 해당 코드가 속한 스코프가 끝날 때까지 기다렸다가 실행됩니다.

{
    defer cleanup();
    work();
}

모든 종료 경로에서 작동합니다

스코프가 정상적으로 끝나든 중간에 일찍 return하든, 지연된 코드는 여전히 실행됩니다. 빠져나갈 방법이 없습니다.

defer file.close();
if (bad) return error.Oops;

오류가 발생해도 건너뛰지 않습니다

함수 뒤쪽의 try가 오류를 반환하더라도 defer는 이미 예약되어 있으므로, 함수를 빠져나가는 동안 실행됩니다.

호출뿐 아니라 모든 문장

defer에는 block을 포함해 하나의 문장을 넣을 수 있으므로, 여러 정리 단계를 함께 묶을 수 있습니다.

defer {
    free(buf);
    log("done");
}

함수 밖의 스코프

defer는 이를 둘러싼 스코프에 연결됩니다. 이 스코프는 함수 전체뿐 아니라 반복문 본문이나 if 블록일 수도 있습니다.

while (more()) {
    defer step();
}

수동 추적이 필요하지 않습니다

defer가 없다면 모든 분기에서 close를 호출해야 한다는 점을 기억해야 합니다. defer를 사용하면 컴파일러가 정리를 실행하므로 어떤 경로도 잊을 수 없습니다.

위에서 아래로 읽힙니다

획득과 정리가 함께 있으므로 코드는 명확한 이야기처럼 읽힙니다. open하고 사용하면 close가 이미 예약되어 있습니다.

리소스 안전성을 책임지는 도구

파일부터 메모리 할당과 잠금까지, defer는 Zig 프로그램을 누수 없이 깔끔하게 유지하는 일상적인 도구입니다.

빠른 확인

지연된 문장은 실제로 언제 실행될까요?

복습

defer를 살펴보았습니다. 리소스를 획득한 옆에 정리를 작성하면 Zig는 모든 경로에서 스코프가 끝날 때 정리가 실행되도록 보장합니다. 🧹

무료로 시작

AI 튜터와 함께 Zig을(를) 배우세요 — 무료

브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.

코스
30
레슨
120

자주 묻는 질문

“defer가 보장하는 것” 강의는 무료인가요?

네 — “defer가 보장하는 것” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Zig Academy 강의 전체를 잠금 해제할 수 있습니다. Zig Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“defer가 보장하는 것”에서 뭘 배우나요?

스코프가 끝날 때 코드를 실행합니다. 브라우저에서 직접 실행하는 실습 코드로 Zig Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Zig Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Zig Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“defer가 보장하는 것” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Zig Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Zig Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. defer가 보장하는 것
  2. 여러 defer의 실행 순서
  3. 실전에서 defer와 errdefer 비교
  4. 열기와 닫기 짝짓기
← Zig Academy(으)로 돌아가기