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
StringHashMap(u32).init(alloc)indexa entradas por slices de cadena que toma prestados.putinserta;getdevuelve un opcional que el formato{?d}imprime tal cual.keyIteratorrecorre los barcos registrados;.*lee cada puntero a clave.
Palabras clave y builtins usados aquí
constdeferfnpubtryu32varvoidwhile
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.
Paso 3 de 3 en La biblioteca estándar; paso 24 de 27 en Fundamentos del lenguaje.