Zig 入門 #6 - Defer
2022-04-22 / Zig, Programming
ziglearn.org を参考に Zig
の基本を一通りさらってみます。まずは Chapter 1 - Basics | ziglearn.org から。今回はDefer
について。
Defer
参考: Defer
構文は以下のようになります。
defer statement;
defer
は現在のブロックを抜ける際に呼び出されます- 同一のブロックに対して複数個ある場合、後の物から呼び出されます
defer
で指定できるのは、代入や void の関数の呼び出しなど値を返さないstatement
になります
今回確認したコードは以下の通りです。
fn defer_() void {
std.log.info("enter", .{});
{
// このブロックを抜ける際に実行されるので enter の次に出力される
defer std.log.info("defer1", .{});
}
// defer は後から定義されたものが先に実行されるので defer3 の次に出力される
defer std.log.info("defer2", .{});
// defer_ を抜ける際に実行されるので exit の次に出力される
defer std.log.info("defer3", .{});
std.log.info("exit", .{});
}
// 結果
// info: enter
// info: defer1
// info: exit
// info: defer3
// info: defer2