defer en Zig
La limpieza declarada junto a lo que limpia: defer corre al salir del ámbito, en reversa.
const std = @import("std");
fn brew() void {
// defer runs at scope exit, last-declared first.
std.debug.print("kettle on\n", .{});
defer std.debug.print("kettle off\n", .{});
defer std.debug.print("pour the cup\n", .{});
std.debug.print("three minutes steeping\n", .{});
}
pub fn main() void {
brew();
std.debug.print("milk first, obviously\n", .{});
}
Cómo funciona
- Cada
deferse registra cuando su línea se alcanza, no cuando corre. - Al salir del ámbito disparan del último al primero: servir la taza, luego apagar la pava.
- El patrón mantiene adquisición y liberación vecinas en el código.
Palabras clave y builtins usados aquí
constdeferfnpubvoid
El intento, en números
- Líneas
- 14
- Caracteres a escribir
- 355
- Tokens
- 112
- Ritmo de tres estrellas
- 75 tpm
Al ritmo de tres estrellas de 75 tokens por minuto, este intento toma unos 90 segundos.
Paso 3 de 3 en Errores; paso 9 de 27 en Fundamentos del lenguaje.