typestar

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

  1. startsWith, indexOf y eql cubren las preguntas de todos los días.
  2. indexOf devuelve un opcional — {?d} imprime el quizás-índice directo.
  3. tokenizeAny parte por espacios y comas sin reservar nada.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

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

← Anterior Siguiente →