typestar

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

  1. Cada defer se registra cuando su línea se alcanza, no cuando corre.
  2. Al salir del ámbito disparan del último al primero: servir la taza, luego apagar la pava.
  3. El patrón mantiene adquisición y liberación vecinas en el código.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 3 de 3 en Errores; paso 9 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →

defer en otros lenguajes