deferが保証すること
スコープ終了時にコードを実行します。
「deferが保証すること」はCoddyKit上の無料Zig Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはZig Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Zig Academyコースには全4レッスンが含まれています。
信頼できるクリーンアップ
ほとんどすべてのプログラムは、後で閉じなければならないものを開きます。Zigには、クリーンアップを決して忘れないための defer があります。
defer の動作
defer 文は、それを含むスコープがどのように終了しても、スコープの終了時に実行するコードを登録します。
defer cleanup();すぐにクリーンアップを書く
重要な考え方は、リソースを取得する行のすぐ隣にクリーンアップの行を書くことです。こうすれば、2つが離れてしまうことはありません。
const file = try open();
defer file.close();スコープの終了時に実行される
deferしたコードはすぐには実行されません。そのコードが属するスコープが終了するまで待ち、その時点で実行されます。
{
defer cleanup();
work();
}どの終了経路でも動作する
スコープが通常どおり終了する場合でも、途中で早期にreturnする場合でも、deferしたコードは実行されます。抜け道はありません。
defer file.close();
if (bad) return error.Oops;エラーでもスキップされない
関数の後半にある try がエラーを返した場合でも、deferはすでに登録されているため、終了時に実行されます。
呼び出しだけでなく任意の文に使える
deferにはブロックを含む任意の単一文を指定できるため、複数のクリーンアップ手順をまとめられます。
defer {
free(buf);
log("done");
}関数以外のスコープ
deferはそれを囲むスコープに結び付きます。そのスコープは関数全体だけでなく、ループ本体やifブロックの場合もあります。
while (more()) {
defer step();
}手動で追跡する必要がない
deferがなければ、すべての分岐で閉じることを覚えておく必要があります。deferを使えば、コンパイラーがクリーンアップを実行するため、どの経路も忘れずに済みます。
上から下へ読める
取得とクリーンアップが近くにあるため、コードを明確な流れとして読めます。開く、使う、そして閉じることがすでに保証されている、という流れです。
リソース安全性を支える定番ツール
ファイル、メモリの割り当て、ロックなど、defer はZigプログラムをリークなく整理された状態に保つ、日常的なツールです。
確認問題
deferした文は実際にはいつ実行されますか。
まとめ
defer について学びました。取得処理のそばにクリーンアップを書けば、Zigはすべての経路でスコープ終了時に実行されることを保証します。🧹
AI チューターと学ぶ Zig — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 30
- レッスン
- 120
よくある質問
「deferが保証すること」レッスンは無料ですか?
はい。「deferが保証すること」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Zig Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Zig Academyコースには全4レッスンが含まれています。
「deferが保証すること」で何を学びますか?
スコープ終了時にコードを実行します。 ブラウザで直接実行するハンズオンコードでZig Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Zig Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのZig Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「deferが保証すること」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このZig Academyレッスンでコードを書いて実行できますか?
はい。すべてのZig Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。