defer
defer
将在当前作用域末尾执行表达式。
如果存在多个 defer
,它们将会按照出栈方式执行。
zig
const std = @import("std");
const print = std.debug.print;
pub fn main() !void {
defer print("exec third\n", .{});
if (false) {
defer print("will not exec\n", .{});
}
defer {
print("exec second\n", .{});
}
defer {
print("exec first\n", .{});
}
}
defer
分别可以执行单个语句和一个块,并且如果控制流不经过 defer
,则不会执行。
对应 defer
的还有 errdefer
,具体见这里 errdefer
。