std.mem en Zig
Las cadenas son []const u8, y std.mem es la caja de herramientas que las trabaja.
const std = @import("std");
pub fn main() void {
const motto = "measure twice, cut once";
// Strings are []const u8; std.mem does the string work.
const starts = std.mem.startsWith(u8, motto, "measure");
std.debug.print("starts well? {}\n", .{starts});
std.debug.print("'cut' at: {?d}\n", .{std.mem.indexOf(u8, motto, "cut")});
std.debug.print("equal? {}\n", .{std.mem.eql(u8, motto[0..7], "measure")});
var words = std.mem.tokenizeAny(u8, motto, " ,");
while (words.next()) |w| std.debug.print("[{s}] ", .{w});
std.debug.print("\n", .{});
}
Cómo funciona
startsWith,indexOfyeqlcubren las preguntas de todos los días.indexOfdevuelve un opcional —{?d}imprime el quizás-índice directo.tokenizeAnyparte por espacios y comas sin reservar nada.
Palabras clave y builtins usados aquí
constfnpubu8varvoidwhile
El intento, en números
- Líneas
- 15
- Caracteres a escribir
- 544
- Tokens
- 187
- Ritmo de tres estrellas
- 65 tpm
Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 173 segundos.
Paso 1 de 3 en La biblioteca estándar; paso 22 de 27 en Fundamentos del lenguaje.