typestar

StringHashMap en Zig

Un registro portuario: claves de cadena, amarraderos enteros y un iterador de claves.

const std = @import("std");

pub fn main() !void {
    var gpa = std.heap.DebugAllocator(.{}){};
    defer _ = gpa.deinit();
    const alloc = gpa.allocator();

    // Keys are string slices; the map borrows them.
    var moorings = std.StringHashMap(u32).init(alloc);
    defer moorings.deinit();

    try moorings.put("Persephone", 9);
    try moorings.put("Skua", 4);

    std.debug.print("Skua at berth {?d}\n", .{moorings.get("Skua")});
    std.debug.print("ships registered: {d}\n", .{moorings.count()});
    var it = moorings.keyIterator();
    while (it.next()) |ship| std.debug.print("- {s}\n", .{ship.*});
}

Cómo funciona

  1. StringHashMap(u32).init(alloc) indexa entradas por slices de cadena que toma prestados.
  2. put inserta; get devuelve un opcional que el formato {?d} imprime tal cual.
  3. keyIterator recorre los barcos registrados; .* lee cada puntero a clave.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
19
Caracteres a escribir
569
Tokens
184
Ritmo de tres estrellas
65 tpm

Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 170 segundos.

Escribe este fragmento

Paso 3 de 3 en La biblioteca estándar; paso 24 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →